home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Sound / DelfMPEG / src / MP2.a56 < prev    next >
Text File  |  2000-05-16  |  63KB  |  1,589 lines

  1. ;*****************************************************************************
  2. ;
  3. ;    DelfMPEG - MPEG audio player for Delfina DSP
  4. ;    Copyright (C) 1999, 2000  Michael Henke
  5. ;
  6. ;    This program is free software; you can redistribute it and/or modify
  7. ;    it under the terms of the GNU General Public License as published by
  8. ;    the Free Software Foundation; either version 2 of the License, or
  9. ;    (at your option) any later version.
  10. ;
  11. ;    This program is distributed in the hope that it will be useful,
  12. ;    but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. ;    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. ;    GNU General Public License for more details.
  15. ;
  16. ;    You should have received a copy of the GNU General Public License
  17. ;    along with this program; if not, write to the Free Software
  18. ;    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  19. ;
  20. ;*****************************************************************************
  21.  
  22.  
  23.  
  24. ;Delfina object DSP56K_MP2
  25. ;memory map (for Amiga access)
  26. ;
  27. ; prog
  28. ;   0 .. init (x1=mem_mp2, x0=mem_mp2p, y1=/, y0=/)
  29. ;  +2 .. decode MP2 frame (x1=mono, x0=outbuf, y1=translate, y0=jsbound)
  30. ;
  31. ; xdata
  32. ; +2048 .. inbuf (Amiga write)
  33. ;
  34. ; ydata
  35. ;   0 .. busy (Amiga read only, TRUE (NON-ZERO) if decoder is running)
  36. ;   1 .. forcemono (Amiga write)
  37.  
  38.  
  39.  
  40.     org    p:
  41.  
  42. ;->prog
  43.     jmp    init
  44.  
  45. ;->prog+2
  46.  
  47. ;*****************************************************************************
  48. ;
  49. ; **** MPEG1 layer II frame decoder ****
  50. ;
  51. ; parameters
  52. ;  x1 - mono          (mono: not_zero, stereo: zero)
  53. ;  x0 - output buffer (mono: x: only,  stereo: x: left, y: right)
  54. ;  y1 - translate     (for sblimit, bitalloc, quantization)
  55. ;  y0 - jsbound
  56. ;
  57. ;  xdata+2048 - input buffer (frame data without header, max. 1788 bytes)
  58. ;
  59. ;
  60. ; based on the mp2 player for Atari Falcon by Fredrik Noring
  61. ; Delfina DSP programming by Smack/Infect!
  62. ;
  63. ;
  64. ; (Thu 07-Oct-1999) - first beta version, mono decoding doesn't work
  65. ; (Fri 15-Oct-1999) - code cleanup+optimizing, little speedup
  66. ;                     (getbits loop, rsinx_rcosx table to internal mem)
  67. ;                     fixed mono decoding (decode_subbands bug: #>2+3)
  68. ; (Sun 28-Nov-1999) - little code optimizing and speedup
  69. ;                     (bfy1_loop, unscramble_loop to internal mem)
  70. ; (Sun 09-Jan-2000) - subband synthesis routine optimized
  71. ;                     (little speedup, slightly shorter code, now it needs
  72. ;                     about 24% DSP time on my Delfina1200 for 44.1kHz)
  73. ; (Wed 16-Feb-2000) - fixed the 'low-bitrate bug'
  74. ;                   - playback quality slightly improved
  75. ;                     (fixed the little known 'intermediate ZERO-bitalloc bug')
  76. ;                   - added DSP overload detection (y:busy)
  77. ; (Mon 03-Apr-2000) - added FORCEMONO feature (only left channel is decoded)
  78. ; (Wed 26-Apr-2000) - optimized synthesis routine (significant speedup!)
  79. ;
  80. ;*****************************************************************************
  81.  
  82.  
  83.     move    x0,x:synth_out_p    ;store output pointer
  84.  
  85.     tfr    x1,a    #>1,x0        ;a=mono
  86.     tst    a    #>2,a
  87.     tne    x0,a
  88.     move    a,x:channels        ;store channels
  89.  
  90.     move    a,y:busy        ;set BUSY to non-zero
  91.  
  92.     move    y1,n0            ;translate
  93.     move    #table_translate_sblimit,r0
  94.  
  95.     move    y1,x:translate
  96.  
  97.     move    y0,x:jsbound        ;store jsbound
  98.  
  99.     move    y:(r0+n0),y1
  100.     move    #table_translate_alloc,r0
  101.     move    y1,x:sblimit
  102.     move    y:(r0+n0),y1
  103.     move    #table_translate_quantizations,r0
  104.     move    y1,x:decoder_nbals
  105.     move    y:(r0+n0),y1
  106.     move    y1,x:decoder_quantizations
  107.  
  108. ;    ** compute audio buffer modifiers
  109.     move    #>$7ff,x0
  110.     move    #>128,x1
  111. ;;    move    x:channels,b
  112. ;>>> forcemono
  113.     move    #>1,y0
  114.     move    y:forcemono,a
  115.     tst    a    x:channels,b
  116.     tne    y0,b
  117. ;<<<
  118.     move    #>2,y0
  119.     move    #>$3ff,a
  120.     cmp    y0,b    #>64,b
  121.     teq    x0,a
  122.     teq    x1,b
  123.     move    a,x:synth_audio_mask
  124.     move    b,x:synth_audio_delta
  125.  
  126. ;    ** calculate deltas for the cosine transform
  127.     move    x:channels,a
  128.     lsl    a    a,y0
  129.     add    y0,a
  130.     move    a,x:synth_imfct_delta
  131.  
  132. ;    ** clear fraction
  133.     clr    a    #decoder_fraction,r0
  134.     rep    #2*32*3
  135.     move    a1,x:(r0)+
  136.  
  137. ;    ** reset getbits
  138.     move    #getbits_temp,r0
  139.     move    #inbuf,x0
  140.     move    x0,x:getbits_stream_p
  141.     move    #$800000,a1
  142.     move    a1,x:(r0)    ;initialize 'current bitstream word'
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149. ;******************************************************************
  150. ;decode_scales
  151. ;    ** getbits_init
  152.     move    x:getbits_stream_p,r7
  153.     move    #getbits_temp,r6
  154.     move    x:decoder_getbits_loop_p,r5
  155.  
  156. ;    **
  157. ;    ** fetch bit allocation table
  158. ;    **
  159.     clr    b    x:channels,y0
  160.     move    x:jsbound,y1
  161.     move    x:decoder_nbals,r0
  162.     move    #decoder_bitalloc,r1
  163.  
  164. ;    ** loop until jsbound
  165.     move    y:(r0)+,n7        ; nbal
  166.     move    #>1,x1
  167.     do    y1,sb_loop0    ;jsbound
  168.     do    y0,ch_loop0    ;channels
  169.     clr    a    b,x0        ;save b
  170.     move    x:(r6),b1        ;current bitstream word
  171.     jsr    (r5)            ;-getbits- read nbal bits
  172.     tfr    x0,b    b1,x:(r6)    ;restore b
  173.     add    x1,b    a,x:(r1)+    ;b=b+1
  174. ch_loop0
  175.     move    y:(r0)+,n7        ; nbal
  176. sb_loop0
  177. ;    ** loop until sblimit (for joint-stereo only)
  178.     move    x:sblimit,a
  179.     sub    y1,a    b,y0
  180.     jle    sb_loop1        ; not joint-stereo
  181.     do    a,sb_loop1    ;sblimit-jsbound
  182.     clr    a    b,x0        ;save b
  183.     move    x:(r6),b1        ;current bitstream word
  184.     jsr    (r5)            ;-getbits- read nbal bits
  185.     tfr    x0,b    b1,x:(r6)    ;restore b
  186.     add    x1,b    a,x:(r1)+
  187.     add    x1,b    y:(r0)+,n7        ; nbal
  188.     move        a,x:(r1)+    b,y0    ;b=b+2
  189. sb_loop1
  190.  
  191.     move    x:(r6),b1    ;current bitstream word
  192.  
  193. ;    **
  194. ;    ** fetch scalefactor selection information
  195. ;    **
  196.     move    #decoder_scfsi,r0
  197.     move    #decoder_bitalloc,r4
  198.     move    r4,r3
  199.     move    #2,n7            ; 2 bit scfsi
  200.     do    y0,sf_loop0    ;sblimit*channels
  201.     move    x:(r3)+,a        ;check bitalloc
  202.     tst    a    #0,a
  203.     jsne    (r5)            ;-getbits-
  204.     move    a,x:(r0)+
  205. sf_loop0
  206.  
  207. ;    **
  208. ;    ** fetch scale factors
  209. ;    **
  210.     move    #decoder_scfsi,r0
  211.     move    #decoder_scalefactor,r1
  212.     move    #6,n7            ; 6 bit scalefactors
  213.     do    y0,sf_loop1    ;sblimit*channels
  214.  
  215.     clr    a    x:(r4)+,x0    ;check bitalloc
  216.     cmp    x0,a    x:(r0)+,x0
  217.     jeq    sf_ba0
  218.  
  219.     cmp    x0,a    #>1,a
  220.     jne    sf_c1
  221.     clr    a
  222.     jsr    (r5)            ;-getbits- all three
  223.     clr    a    a,x:(r1)+
  224.     jsr    (r5)            ;-getbits-
  225.     clr    a    a,x:(r1)+
  226.     jsr    (r5)            ;-getbits-
  227.     jmp    sf_resume
  228.  
  229. sf_c1    cmp    x0,a    #>2,a
  230.     jne    sf_c2
  231.     clr    a
  232.     jsr    (r5)            ;-getbits- 1 + 3
  233.     move    a,x:(r1)+
  234.     clr    a    a,x:(r1)+
  235.     jsr    (r5)            ;-getbits-
  236.     jmp    sf_resume
  237.  
  238. sf_c2    cmp    x0,a    #0,a
  239.     jne    sf_c3
  240.     jsr    (r5)            ;-getbits- just one
  241. sf_ba0    move    a,x:(r1)+
  242.     move    a,x:(r1)+
  243.     jmp    sf_resume
  244.  
  245. sf_c3    jsr    (r5)            ;-getbits- 1 + 2
  246.     clr    a    a,x:(r1)+
  247.     jsr    (r5)            ;-getbits-
  248.     move    a,x:(r1)+
  249.  
  250. sf_resume
  251.     move    a,x:(r1)+
  252. sf_loop1
  253.  
  254.  
  255.     move    b1,x:(r6)
  256.  
  257. ;    ** getbits_exit
  258.     move    r7,x:getbits_stream_p
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.     move    #>decoder_scalefactor+0,x0
  266.     move    x0,x:decoder_sf_granule
  267.     move    #>decode_return00,x0
  268.     jmp    decode_samples        ;avoid stack overflow!
  269. decode_return00
  270.     move    #>decode_return01,x0
  271.     jmp    decode_samples        ;avoid stack overflow!
  272. decode_return01
  273.     move    #>decode_return02,x0
  274.     jmp    decode_samples        ;avoid stack overflow!
  275. decode_return02
  276.     move    #>decode_return03,x0
  277.     jmp    decode_samples        ;avoid stack overflow!
  278. decode_return03
  279.  
  280.     move    #>decoder_scalefactor+1,x0
  281.     move    x0,x:decoder_sf_granule
  282.     move    #>decode_return10,x0
  283.     jmp    decode_samples        ;avoid stack overflow!
  284. decode_return10
  285.     move    #>decode_return11,x0
  286.     jmp    decode_samples        ;avoid stack overflow!
  287. decode_return11
  288.     move    #>decode_return12,x0
  289.     jmp    decode_samples        ;avoid stack overflow!
  290. decode_return12
  291.     move    #>decode_return13,x0
  292.     jmp    decode_samples        ;avoid stack overflow!
  293. decode_return13
  294.  
  295.     move    #>decoder_scalefactor+2,x0
  296.     move    x0,x:decoder_sf_granule
  297.     move    #>decode_return20,x0
  298.     jmp    decode_samples        ;avoid stack overflow!
  299. decode_return20
  300.     move    #>decode_return21,x0
  301.     jmp    decode_samples        ;avoid stack overflow!
  302. decode_return21
  303.     move    #>decode_return22,x0
  304.     jmp    decode_samples        ;avoid stack overflow!
  305. decode_return22
  306.     move    #>decode_return23,x0
  307.     jmp    decode_samples        ;avoid stack overflow!
  308. decode_return23
  309.  
  310.  
  311. ;    do    #500,overload0
  312. ;    do    #1000,overload1
  313. ;    nop
  314. ;overload1
  315. ;    nop
  316. ;overload0
  317.  
  318.  
  319. ;exit
  320.     move    #0,x0
  321.     move    x0,y:busy        ;clear BUSY
  322.     rts
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333. ;******************************************************************
  334. decode_samples
  335.     move    x0,x:decode_rts_p
  336.  
  337. ;    ** getbits_init
  338.     move    x:getbits_stream_p,r7
  339.     move    #getbits_temp,r6
  340.     move    x:decoder_getbits_loop_p,r5
  341.  
  342.  
  343.  
  344.     move    #decoder_bitalloc,r0
  345.     move    #decoder_fraction,r1
  346.     move    #2,n1
  347.     move    x:decoder_quantizations,r2
  348.     move    #16,n2
  349.  
  350.     move    x:jsbound,a
  351.     lsl    a    x:decoder_sf_granule,x0
  352.     move    x0,x:decoder_sfp
  353.     move    a,x:decoder_joint_countdown
  354.  
  355. ;    **
  356. ;    ** read+decode samples from bitstream
  357. ;    **
  358.     move    x:sblimit,x0
  359.     move    x0,x:decode_ds_sblimit_count
  360. ds_sb_loop_head
  361.     move    x:decode_ds_sblimit_count,a
  362.     move    #>1,x0
  363.     sub    x0,a    x:channels,x0
  364.     jmi    ds_sb_loop        ;'low-bitrate bug' - jeq
  365.     move    a,x:decode_ds_sblimit_count
  366.  
  367.     do    x0,ds_ch_loop        ;channels
  368.  
  369. ;    ** update joint-stereo counter and check bitalloc
  370.     move    #>1,x0
  371.     move    x:decoder_joint_countdown,b
  372.     sub    x0,b    x:(r0)+,a
  373.     tst    a    b,x:decoder_joint_countdown
  374.     jne    ds_samples
  375.  
  376. ;    ** fill with zeroes
  377.     move    a,x:(r1)+
  378.     move    a,x:(r1)+
  379.     move    a,x:(r1)-n1
  380.     jmp    ds_scalefactor_adjust
  381.  
  382. ds_samples
  383. ;    ** check if joint-stereo applies
  384.     move    x:decoder_old_samples_p,r4
  385.     jclr    #23,b1,ds_no_joint
  386.     jset    #0,b1,ds_no_joint
  387.  
  388. ;    ** copy old samples for joint-stereo
  389.     move            y:(r4)+,a
  390.     move    a,x:(r1)+    y:(r4)+,a
  391.     move    a,x:(r1)+    y:(r4),a
  392.     move    a,x:(r1)-n1
  393.     jmp    ds_scalefactor_adjust
  394.  
  395. ds_no_joint
  396. ;    ** decode samples
  397.     move    a,n2
  398.     move    #table_bits,r3
  399.     move    y:(r2+n2),n3        ; quantization
  400.     move    #16,n2
  401.     move    y:(r3+n3),n7        ; bits
  402.  
  403.     clr    a    n3,y0
  404.     cmp    y0,a    #>1,a
  405.     jeq    ds_fetch_grouping
  406.     cmp    y0,a    #>3,a
  407.     jeq    ds_fetch_grouping
  408.     cmp    y0,a    n3,a
  409.     jeq    ds_fetch_grouping
  410.  
  411. ;    ** no grouping, fetch triplet
  412.     lsl    a    x:(r6),b1    ;current bitstream word
  413.     lsl    a    x:decoder_table_xmdc_p,r3
  414.     clr    a    a,n3
  415.     jsr    (r5)            ;-getbits-
  416.     move    b1,x:(r6)
  417.     move    (r3)+n3
  418.     move    #3,n3
  419.  
  420. ;    ** remove greatest bit and check
  421. ;    ** if the accumulator should be 0.0 or -1.0
  422.     clr    b    a,x1    y:(r3)+,y0    ; x
  423.     and    y0,a    #-0.5,y1
  424.     cmp    x1,a    a,x1    y:(r3)+,y0    ; m
  425.     teq    y1,b
  426. ;    ** add constant `d', multiply with
  427. ;    ** the inverse, thus normalize sample,
  428. ;    ** and multiply with the constant `c'
  429.     mpy    y0,x1,a    y:(r3)+,y0        ; d
  430.     add    y0,b    a0,y1
  431.     add    y1,b    y:(r3)-n3,y0        ; c
  432.     move    b,y1
  433.     macr    y0,y1,b        ; remember that c is subtracted by 1.0!
  434.     move    b,x:(r1)+
  435.  
  436.     clr    a    x:(r6),b1    ;current bitstream word
  437.     jsr    (r5)            ;-getbits-
  438.     move    b1,x:(r6)
  439. ;    ** remove greatest bit and check
  440. ;    ** if the accumulator should be 0.0 or -1.0
  441.     clr    b    a,x1    y:(r3)+,y0    ; x
  442.     and    y0,a    #-0.5,y1
  443.     cmp    x1,a    a,x1    y:(r3)+,y0    ; m
  444.     teq    y1,b
  445. ;    ** add constant `d', multiply with
  446. ;    ** the inverse, thus normalize sample,
  447. ;    ** and multiply with the constant `c'
  448.     mpy    y0,x1,a    y:(r3)+,y0        ; d
  449.     add    y0,b    a0,y1
  450.     add    y1,b    y:(r3)-n3,y0        ; c
  451.     move    b,y1
  452.     macr    y0,y1,b        ; remember that c is subtracted by 1.0!
  453.     move    b,x:(r1)+
  454.  
  455.     clr    a    x:(r6),b1    ;current bitstream word
  456.     jsr    (r5)            ;-getbits-
  457.     move    b1,x:(r6)
  458. ;    ** remove greatest bit and check
  459. ;    ** if the accumulator should be 0.0 or -1.0
  460.     clr    b    a,x1    y:(r3)+,y0    ; x
  461.     and    y0,a    #-0.5,y1
  462.     cmp    x1,a    a,x1    y:(r3)+,y0    ; m
  463.     teq    y1,b
  464. ;    ** add constant `d', multiply with
  465. ;    ** the inverse, thus normalize sample,
  466. ;    ** and multiply with the constant `c'
  467.     mpy    y0,x1,a    y:(r3)+,y0        ; d
  468.     add    y0,b    a0,y1
  469.     add    y1,b    y:(r3)-n3,y0        ; c
  470.     move    b,y1
  471.     macr    y0,y1,b        ; remember that c is subtracted by 1.0!
  472.     move    b,x:(r1)-n1
  473.  
  474.     jmp    ds_scalefactor_adjust
  475.  
  476.  
  477. ds_fetch_grouping
  478. ;    ** fetch grouped triplet
  479.     move    #table_grouping,r3
  480.  
  481.     clr    a    x:(r6),b1    ;current bitstream word
  482.     jsr    (r5)            ;-getbits-
  483.  
  484.     lsl    a    a,x0
  485.     add    x0,a    y:(r3+n3),r4
  486.     move    a,n4
  487.  
  488.     move    b1,x:(r6)
  489.  
  490.     move    (r4)+n4
  491.     move            y:(r4)+,a
  492.     move    a,x:(r1)+    y:(r4)+,a
  493.     move    a,x:(r1)+    y:(r4),a
  494.     move    a,x:(r1)-n1
  495.  
  496.  
  497. ds_scalefactor_adjust
  498. ;    ** multiply samples with the
  499. ;    ** corresponding scalefactors
  500.     move    x:decoder_sfp,r3
  501.     move    #3,n3
  502.     move    x:decoder_old_samples_p,r4
  503.     move    x:(r3)+n3,n3
  504.     move    r3,x:decoder_sfp
  505.     move    #table_multiple,r3
  506.     move        x:(r1)+,x0
  507.     tfr    x0,a            y:(r3+n3),y1
  508.     mpyr    x0,y1,b    x:(r1)-,x0    a,y:(r4)+    ;old samples
  509.     mpyr    x0,y1,a    b,x:(r1)+n1    x0,b
  510.     move        x:(r1)-,x0    b,y:(r4)+    ;old samples
  511.     mpyr    x0,y1,b    a,x:(r1)+    x0,a
  512.     move        b,x:(r1)+    a,y:(r4)    ;old samples
  513.  
  514. ds_ch_loop
  515.     move    (r2)+n2        ; update next to quantization
  516.     jmp    ds_sb_loop_head
  517. ds_sb_loop
  518. ;    ** getbits_exit
  519.     move    r7,x:getbits_stream_p
  520.  
  521.  
  522.  
  523.  
  524. ;    move    x:decode_rts_p,r0
  525. ;    nop
  526. ;    jmp    (r0)            ;'rts'-replacement
  527.  
  528.  
  529.  
  530. ;******************************************************************
  531. ;subband synthesis
  532.  
  533.     move    #>decoder_fraction,x0
  534.     move    x0,x:synth_imfct_fraction_p
  535.  
  536.     move    #3,n0
  537.     move    n0,x:decode_tr3_count
  538. synth_tr_loop_head
  539.  
  540.     move    x:synth_imfct_fraction_p,r0
  541.  
  542.     move    x:synth_pcm64_p,x0
  543.     move    x0,x:synth_pcm_p
  544.  
  545. ;;    move    x:channels,b            ;1 or 2
  546. ;>>> forcemono
  547.     move    #<0,x0        ;#>1,x0
  548.     move    y:forcemono,a
  549.     tst    a    x:channels,b
  550.     tne    x0,b
  551. ;<<<
  552.  
  553. synth_ch_loop_head
  554.     lsr    b    x:synth_imfct_p,n7    ;x:synth_imfct_p    !! n7
  555.     move    b,x:decode_channels_count    ;0 or 1
  556.  
  557. ;    **
  558. ;    ** perform inverse modified fast cosine transform
  559. ;    **
  560.  
  561.  
  562. ;    ** first butterfly pass
  563.     move    x:synth_imfct_delta,n0
  564.     move    n7,r1                ;x:synth_imfct_p
  565.     move    n7,r5
  566.     move    #0.70710678,y0            ;cos(pi/4)
  567.     move            x:(r0)+n0,x0
  568.     do    #8,synth_bfy1
  569.     mpyr     x0,y0,a    x:(r0)+n0,x0
  570.     mpyr    -x0,y0,a    a,x:(r1)+    a,y:(r5)+
  571.     move            a,x:(r1)+
  572.     mpyr     x0,y0,a    x:(r0)+n0,x0
  573.     mpyr    -x0,y0,a    x:(r0)+n0,x0    a,y:(r5)+
  574.     mpyr     x0,y0,a    a,x:(r1)+    a,y:(r5)+
  575.     mpyr    -x0,y0,a    a,x:(r1)+
  576.     move            x:(r0)+n0,x0    a,y:(r5)+
  577. synth_bfy1
  578.  
  579. ;    ** second butterfly pass
  580.     move    n7,a                ;x:synth_imfct_p
  581.     move    #>16,x0
  582.     add    x0,a    a,r0
  583.     add    x0,a    a,r4
  584.     add    x0,a    a,r6
  585.     move        a,r5
  586.     lua    (r0)+,r7
  587.     move            x:(r0),b    y:(r4),y0
  588.     do    #16,synth_bfy2
  589.     add    y0,b        x:(r4),x1    y:(r0),a
  590.     sub    x1,a        b,x:(r5)    y:(r0),b
  591.     add    x1,b        x:(r0),a    a,y:(r5)+
  592.     sub    y0,a        x:(r0),b    b,y:(r6)
  593.     sub    x1,b        a,x:(r6)+    y:(r0),a
  594.     sub    y0,a        b,x:(r4)    y:(r0),b
  595.     add    y0,b        x:(r0),a    a,y:(r4)+
  596.     add    x1,a        x:(r7)+,b    b,y:(r0)    ;!b
  597.     move            a,x:(r0)+    y:(r4),y0    ;!y0
  598. synth_bfy2
  599.  
  600. ;    ** perform the rest of the butterfly passes
  601.     move    x:synth_tab_rsincosx_p,n6    ;x:synth_tab_rsincosx_p    !! n6
  602.     move    n7,r0                ;x:synth_imfct_p
  603.     movec    #<64-1,m0            ;modulo-64 addressing
  604.     movec    #<64-1,m4            ;modulo-64 addressing
  605.  
  606. ;    ** pass 3
  607.     move    n6,r6                ;x:synth_tab_rsincosx_p
  608.     move    #<8,n0
  609.     move    #<8,n4
  610.     move    r0,r4
  611.     do    #4,synth_grp3
  612.     lua    (r0)+n0,r5
  613.     move    r5,r2
  614.     move            x:(r6),x0
  615.     move            x:(r0),b    y:(r5),y1
  616.     mac    -x0,y1,b    x:(r2)+,x1    y:(r6)+,y0
  617.     do    #8,synth_bfy3
  618.     macr    y0,x1,b        x:(r0),a
  619.     subl    b,a        b,x:(r0)    y:(r4)+,b
  620.     mac    y0,y1,b        a,x:(r5)    y:(r2),y1
  621.     macr    x0,x1,b                y:(r0),a
  622.     subl    b,a        x:(r4),b    b,y:(r0)+
  623.     mac    -x0,y1,b    x:(r2)+,x1    a,y:(r5)+
  624. synth_bfy3
  625.     move            x:(r0)+n0,x0    y:(r4)+n4,y0    ;update r0, r4
  626. synth_grp3
  627.  
  628.     movec    #<64-1,m2            ;modulo-64 addressing
  629.     movec    #<64-1,m5            ;modulo-64 addressing
  630.  
  631. ;    ** pass 4
  632.     move    n6,r6                ;x:synth_tab_rsincosx_p
  633.     move    #<4+0,n0
  634.     move    #<4+1,n2
  635.     move    #<4+1,n4
  636.     move    #<4+1,n5
  637.     lua    (r0)+n0,r5
  638.     move    r5,r2
  639.     move            x:(r6),x0
  640.     move            x:(r0),b    y:(r5),y1
  641.     do    #8,synth_grp4
  642.     mac    -x0,y1,b    x:(r2)+,x1    y:(r6)+,y0
  643.     macr    y0,x1,b        x:(r0),a
  644.     subl    b,a        b,x:(r0)    y:(r4)+,b
  645.     mac    y0,y1,b        a,x:(r5)    y:(r2),y1
  646.     macr    x0,x1,b                y:(r0),a
  647.     subl    b,a        x:(r4),b    b,y:(r0)+
  648.     mac    -x0,y1,b    x:(r2)+,x1    a,y:(r5)+
  649.     macr    y0,x1,b        x:(r0),a
  650.     subl    b,a        b,x:(r0)    y:(r4)+,b
  651.     mac    y0,y1,b        a,x:(r5)    y:(r2),y1
  652.     macr    x0,x1,b                y:(r0),a
  653.     subl    b,a        x:(r4),b    b,y:(r0)+
  654.     mac    -x0,y1,b    x:(r2)+,x1    a,y:(r5)+
  655.     macr    y0,x1,b        x:(r0),a
  656.     subl    b,a        b,x:(r0)    y:(r4)+,b
  657.     mac    y0,y1,b        a,x:(r5)    y:(r2),y1
  658.     macr    x0,x1,b                y:(r0),a
  659.     subl    b,a        x:(r4),b    b,y:(r0)+
  660.     mac    -x0,y1,b    x:(r2)+n2,x1    a,y:(r5)+    ;update r2
  661.     macr    y0,x1,b        x:(r0),a
  662.     subl    b,a        b,x:(r0)    y:(r4)+n4,b    ;update r4
  663.     mac    y0,y1,b        a,x:(r5)    y:(r2),y1    ;!y1
  664.     macr    x0,x1,b        x:(r6),x0    y:(r0),a    ;!x0
  665.     subl    b,a        x:(r4),b    b,y:(r0)+    ;!b
  666.     move            x:(r0)+n0,a    a,y:(r5)+n5    ;update r0, r5
  667. synth_grp4
  668.  
  669. ;    ** pass 5
  670.     move    n6,r6                ;x:synth_tab_rsincosx_p
  671.     move    #<2+0,n0
  672.     move    #<2+1,n2
  673.     move    #<2+1,n4
  674.     move    #<2+1,n5
  675.     lua    (r0)+n0,r5
  676.     move    r5,r2
  677.     move            x:(r6),x0
  678.     move            x:(r0),b    y:(r5),y1
  679.     do    #16,synth_grp5
  680.     mac    -x0,y1,b    x:(r2)+,x1    y:(r6)+,y0
  681.     macr    y0,x1,b        x:(r0),a
  682.     subl    b,a        b,x:(r0)    y:(r4)+,b
  683.     mac    y0,y1,b        a,x:(r5)    y:(r2),y1
  684.     macr    x0,x1,b                y:(r0),a
  685.     subl    b,a        x:(r4),b    b,y:(r0)+
  686.     mac    -x0,y1,b    x:(r2)+n2,x1    a,y:(r5)+    ;update r2
  687.     macr    y0,x1,b        x:(r0),a
  688.     subl    b,a        b,x:(r0)    y:(r4)+n4,b    ;update r4
  689.     mac    y0,y1,b        a,x:(r5)    y:(r2),y1    ;!y1
  690.     macr    x0,x1,b        x:(r6),x0    y:(r0),a    ;!x0
  691.     subl    b,a        x:(r4),b    b,y:(r0)+    ;!b
  692.     move            x:(r0)+n0,a    a,y:(r5)+n5    ;update r0, r5
  693. synth_grp5
  694.  
  695. ;    ** pass 6
  696.     move    n6,r6                ;x:synth_tab_rsincosx_p
  697.     move    #<1+1,n2
  698.     move    #<1+1,n4
  699.     move    #<1+1,n5
  700.     lua    (r0)+,r5
  701.     move    r5,r2
  702.     move            x:(r6),x0
  703.     move            x:(r0),b    y:(r5),y1
  704.     do    #32,synth_grp6
  705.     mac    -x0,y1,b    x:(r2)+n2,x1    y:(r6)+,y0    ;update r2
  706.     macr    y0,x1,b        x:(r0),a
  707.     subl    b,a        b,x:(r0)    y:(r4)+n4,b    ;update r4
  708.     mac    y0,y1,b        a,x:(r5)    y:(r2),y1    ;!y1
  709.     macr    x0,x1,b        x:(r6),x0    y:(r0),a    ;!x0
  710.     subl    b,a        x:(r4),b    b,y:(r0)+    ;!b
  711.     move            x:(r0)+,a    a,y:(r5)+n5    ;update r0, r5
  712. synth_grp6
  713.  
  714.     movec    m7,m2                ;linear addressing
  715.     movec    m7,m4                ;linear addressing
  716.     movec    m7,m5                ;linear addressing
  717.  
  718. ;    ** unscrambling and final adjustments
  719.     move    x:synth_audio_p,r5
  720.     move    #>synth_tab_cosx,r4
  721.     move    #>synth_tab_sinx,r6
  722.     movec    #<0,m0                ;bit-reverse addressing
  723.     move    #<32,n0
  724.     move            x:(r0),x1    y:(r4)+,y1
  725.     mpy    y1,x1,a                y:(r6)+,y0
  726.     move                    y:(r0)+n0,y1
  727.     macr    -y0,y1,a    x:(r0),x1    y:(r4)+,y1
  728.     move                    y:(r6)+,y0
  729. synth_unscramble_start
  730. ;------    move    #synth_unscramble,r7
  731. ;------    jmp    <synth_unscramble_start
  732.     do    #64-1,synth_unscramble
  733.     mpy    y1,x1,a        a,x:(r5)+    y:(r0)+n0,y1
  734.     macr    -y0,y1,a    x:(r0),x1    y:(r4)+,y1
  735.     move                    y:(r6)+,y0
  736. synth_unscramble
  737. ;------    5+1 words, return: jmp (r7)
  738.     move            a,x:(r5)+
  739.  
  740. ;    ** window audio data
  741.     move    x:synth_audio_p,r0
  742.     movec    x:synth_audio_mask,m0        ;modulo addressing
  743.     movec    m0,m1
  744.     move    x:synth_audio_delta,a
  745.     tfr    a,b        #>32,x0
  746.     add    x0,a        x:synth_pcm_p,r5
  747.     move    a,n0
  748.     lsl    b        #synth_tab_window,r4
  749.     lua    (r0)+n0,r1
  750.     move    x:synth_window_p,r3
  751.     move    b1,n0
  752.     move    b1,n1
  753.     jsr    (r3)
  754.     move    r5,x:synth_pcm_p
  755.     movec    m7,m0                ;linear addressing
  756.     movec    m0,m1
  757.     
  758. ;    ** update pointer to next channel
  759.     move    #>3,x0
  760.     move    x:synth_imfct_fraction_p,a
  761.     add    x0,a        #>64,y0
  762.     move    a,r0
  763.  
  764.     move    x:synth_audio_p,a
  765.     add    y0,a        x:decode_channels_count,b
  766.     tst    b        a,x:synth_audio_p
  767.     jne    synth_ch_loop_head
  768.  
  769.  
  770. ;    ** finally: write audio data to output buffer
  771.     move    x:synth_out_p,r4
  772.     move    x:synth_pcm64_p,r0
  773.     move    #31,n0
  774.     move    #>3,y1
  775.     do    #32,synth_out_loop
  776.     move    x:(r0)+,x1
  777.     mpy    x1,y1,b        x:(r0+n0),x1
  778.     mpy    x1,y1,b        b0,x:(r4)
  779.     move    b0,y:(r4)+
  780. synth_out_loop
  781.     move    r4,x:synth_out_p
  782.  
  783. ;    ** fraction pointer to next triplet
  784. ;    ** and update audio buffer pointers
  785.     move    x:synth_imfct_fraction_p,a
  786.     move    #>1,x0
  787.     move    x:synth_audio_p,r0
  788.     add    x0,a        x:synth_audio_delta,n0
  789.     move    a,x:synth_imfct_fraction_p
  790.     move    (r0)-n0
  791.     movec    x:synth_audio_mask,m0
  792.  
  793.     move    x:decode_tr3_count,a
  794.  
  795.     sub    x0,a    (r0)-n0
  796.     move    a,x:decode_tr3_count
  797.  
  798.     movec    #$ffff,m0
  799.     tst    a    r0,x:synth_audio_p
  800.     jne    synth_tr_loop_head
  801.  
  802.  
  803.  
  804.     move    x:decode_rts_p,r0
  805.     nop
  806.     jmp    (r0)            ;'rts'-replacement
  807.  
  808.  
  809.  
  810.  
  811.  
  812.  
  813.  
  814.  
  815.  
  816.  
  817.  
  818. synth_window_start
  819.     do    #32,synth_window
  820.     move            x:(r0)+n0,x0    y:(r4)+,y0
  821.     mpy    x0,y0,a        x:(r1)+n1,x0    y:(r4)+,y0
  822.     mac    x0,y0,a        x:(r0)+n0,x0    y:(r4)+,y0
  823.     mac    x0,y0,a        x:(r1)+n1,x0    y:(r4)+,y0
  824.     mac    x0,y0,a        x:(r0)+n0,x0    y:(r4)+,y0
  825.     mac    x0,y0,a        x:(r1)+n1,x0    y:(r4)+,y0
  826.     mac    x0,y0,a        x:(r0)+n0,x0    y:(r4)+,y0
  827.     mac    x0,y0,a        x:(r1)+n1,x0    y:(r4)+,y0
  828.     mac    x0,y0,a        x:(r0)+n0,x0    y:(r4)+,y0
  829.     mac    x0,y0,a        x:(r1)+n1,x0    y:(r4)+,y0
  830.     mac    x0,y0,a        x:(r0)+n0,x0    y:(r4)+,y0
  831.     mac    x0,y0,a        x:(r1)+n1,x0    y:(r4)+,y0
  832.     mac    x0,y0,a        x:(r0)+n0,x0    y:(r4)+,y0
  833.     mac    x0,y0,a        x:(r1)+n1,x0    y:(r4)+,y0
  834.     mac    x0,y0,a        x:(r0)+n0,x0    y:(r4)+,y0
  835.     mac    x0,y0,a        x:(r1)+n1,x0    y:(r4)+,y0
  836.     macr    x0,y0,a        (r0)+
  837.     move            a,x:(r5)+    y:(r1)+,a    ;update r1
  838. synth_window
  839.     rts
  840. synth_window_end
  841. ;        ** 21 words
  842.  
  843.  
  844. synth_bfy1_help
  845.     jmp    (r7)
  846.     move    #synth_bfy1,r7
  847.  
  848. synth_unscramble_help
  849.     jmp    (r7)
  850.     move    #synth_unscramble,r7
  851.  
  852.  
  853.  
  854. getbits_loop_start
  855.     do    n7,getbits_loop
  856.     lsl    b            ;b1=b1<<1 (new CARRY bit)
  857.     jne    getbits_ne        ;(patch for short jump)
  858. getbits_cp
  859.     move    x:(r7)+,b1        ;fetch next 24 bits
  860.     rol    b            ;b1=b1<<1, append end marker
  861. getbits_ne
  862.     rol    a            ;get CARRY bit, set condition code ZERO
  863. getbits_loop
  864.     rts
  865. getbits_loop_end
  866. ;        ** 9 words (8 words with 'jne' short jump)
  867.  
  868.  
  869.  
  870.  
  871.  
  872.  
  873.  
  874.  
  875.  
  876.  
  877.  
  878.  
  879.  
  880. ;*** initialize ************************
  881. ; parameters
  882. ;  x1 - mem_mp2 (64+32=96 words in INTERNAL L-memory)
  883. ;  x0 - mem_mp2p (21+6=27 words in INTERNAL P-memory)
  884. ;  y1 - /
  885. ;  y0 - /
  886. init
  887.  
  888. ;********* subband synthesis: fast L-data buffer for IMFCT routine
  889. ;********* (64 words - major speedup!!)
  890.     tfr    x1,a        #>64,x1
  891.     tst    a        #synth_tab_rsinxrcosx,r0
  892.     jeq    init_no_lmem
  893.     add    x1,a        a,x:synth_imfct_p
  894.  
  895. ;********* subband synthesis: rsinx_rcosx table to fast L-data memory
  896. ;********* (32 words - little speedup)
  897.     move    a,x:synth_tab_rsincosx_p
  898.     move    a,r4
  899.     move    x:(r0),a
  900.     do    #32,init_loop0
  901.     move    a,x:(r4)    y:(r0)+,a
  902.     move    x:(r0),a    a,y:(r4)+
  903. init_loop0
  904.  
  905.  
  906.  
  907.  
  908. init_no_lmem
  909.  
  910.     tfr    x0,a        #synth_window_start,r0
  911.     tst    a        x0,r1
  912.     jeq    init_no_pmem
  913.  
  914. ;********* subband synthesis: window loop to fast program memory
  915. ;********* (21 words - major speedup!!)
  916.     move    x0,x:synth_window_p
  917.     lua    (r1)+,r2
  918.     do    #synth_window_end-synth_window_start,init_loop1
  919.     movem    p:(r0)+,x1
  920.     movem    x1,p:(r1)+
  921. init_loop1
  922.     tfr    x0,a        #>synth_window-synth_window_start-1,x0
  923.     add    x0,a        #>synth_unscramble_start,r0
  924.     movem    a,p:(r2)        ;patch absolute address in 'do'
  925.  
  926.  
  927. ;********* subband synthesis: unscramble loop to fast program memory
  928. ;********* (6 words - tiny speedup)
  929.     move    r1,a
  930.     tfr    a,b        r0,r2
  931.     movem    p:(r0)+,x1
  932.     movem    x1,p:(r1)+        ;copy first word of 'do'
  933.     move    #>synth_unscramble-synth_unscramble_start-1,x0
  934.     add    x0,a        (r0)+
  935.     movem    a,p:(r1)+        ;second word of 'do' (absolute address)
  936.     do    #synth_unscramble-synth_unscramble_start-2,init_loop_p1
  937.     movem    p:(r0)+,x1
  938.     movem    x1,p:(r1)+        ;copy the rest
  939. init_loop_p1
  940.     move    #>synth_unscramble_help,r3
  941.     move    #>$0c0000,y0        ;short jump 'jmp xxx'
  942.     movem    p:(r3)+,x1
  943.     movem    x1,p:(r1)+        ;copy 'jmp (r7)'
  944.     movem    p:(r3)+,x1
  945.     movem    x1,p:(r2)+
  946.     movem    p:(r3),x1
  947.     movem    x1,p:(r2)+        ;copy 'move #synth_unscramble,r7'
  948.     or    y0,b
  949.     movem    b,p:(r2)        ;short jump 'jmp <synth_unscramble_start'
  950.  
  951.  
  952.  
  953. init_no_pmem
  954.     rts
  955.  
  956.  
  957.  
  958.  
  959.  
  960.  
  961.  
  962.     org    l:
  963.     align    64
  964.  
  965. synth_imfct_slow
  966.     ds    64
  967.  
  968. synth_tab_rsinxrcosx
  969. ;    **    x:rsinx        y:rcosx
  970.     dcl    0.000000,     0.999999
  971.     dcl    0.999999,     0.000000
  972.     dcl    0.707107,     0.707107
  973.     dcl    0.707107,    -0.707107
  974.     dcl    0.382683,     0.923880
  975.     dcl    0.923880,    -0.382683
  976.     dcl    0.923880,     0.382683
  977.     dcl    0.382683,    -0.923880
  978.     dcl    0.195090,     0.980785
  979.     dcl    0.980785,    -0.195090
  980.     dcl    0.831470,     0.555570
  981.     dcl    0.555570,    -0.831470
  982.     dcl    0.555570,     0.831470
  983.     dcl    0.831470,    -0.555570
  984.     dcl    0.980785,     0.195090
  985.     dcl    0.195090,    -0.980785
  986.     dcl    0.098017,     0.995185
  987.     dcl    0.995185,    -0.098017
  988.     dcl    0.773010,     0.634393
  989.     dcl    0.634393,    -0.773010
  990.     dcl    0.471397,     0.881921
  991.     dcl    0.881921,    -0.471397
  992.     dcl    0.956940,     0.290285
  993.     dcl    0.290285,    -0.956940
  994.     dcl    0.290285,     0.956940
  995.     dcl    0.956940,    -0.290285
  996.     dcl    0.881921,     0.471397
  997.     dcl    0.471397,    -0.881921
  998.     dcl    0.634393,     0.773010
  999.     dcl    0.773010,    -0.634393
  1000.     dcl    0.995185,     0.098017
  1001.     dcl    0.098017,    -0.995185
  1002.  
  1003. decoder_old_samples_slow
  1004.     ds    3
  1005.  
  1006.  
  1007.  
  1008.  
  1009.  
  1010.  
  1011. ;;vars
  1012.  
  1013.     org    x:
  1014.     align    2048
  1015. synth_audio    ds    2048
  1016.  
  1017. ;->xdata+2048
  1018. inbuf    ds    596    ;MPG_MAXFRAMESIZE=1792-4
  1019.  
  1020.  
  1021. channels    ds    1
  1022. translate    ds    1
  1023. sblimit        ds    1
  1024. jsbound        ds    1
  1025.  
  1026. getbits_stream_p    ds    1
  1027. getbits_temp        ds    1
  1028. decoder_getbits_loop_p    dc    getbits_loop_start
  1029.  
  1030. decode_rts_p        ds    1
  1031. decode_ds_sblimit_count    ds    1
  1032. decode_tr3_count    ds    1
  1033. decode_channels_count    ds    1
  1034.  
  1035. ;    dc    "######bitalloc ######"
  1036. decoder_bitalloc    ds    2*32
  1037. ;    dc    "######scfsi    ######"
  1038. decoder_scfsi        ds    2*32
  1039. ;    dc    "######scalefact######"
  1040. decoder_scalefactor    ds    2*32*3
  1041. ;    dc    "######fraction ######"
  1042. decoder_fraction    ds    2*32*3
  1043. ;    dc    "######"
  1044. decoder_old_samples_p    dc    decoder_old_samples_slow
  1045. decoder_table_xmdc_p    dc    table_xmdc
  1046.  
  1047. decoder_sfp        ds    1
  1048. decoder_sf_granule    ds    1
  1049. decoder_quantizations    ds    1
  1050. decoder_nbals        ds    1
  1051. decoder_joint_countdown    ds    1
  1052.  
  1053.  
  1054. synth_out_p        ds    1
  1055. synth_audio_p        dc    synth_audio
  1056. synth_audio_mask    ds    1
  1057. synth_audio_delta    ds    1
  1058. synth_pcm_p        ds    1
  1059. synth_imfct_p        dc    synth_imfct_slow
  1060. synth_window_p        dc    synth_window_start
  1061. synth_tab_rsincosx_p    dc    synth_tab_rsinxrcosx
  1062. synth_imfct_fraction_p    ds    1
  1063. synth_imfct_delta    ds    1
  1064. synth_pcm64_p        dc    synth_pcm64_slow
  1065. synth_pcm64_slow    ds    64
  1066.  
  1067.  
  1068.  
  1069.  
  1070.  
  1071.     org    y:
  1072. busy        dc    0
  1073. forcemono    dc    0
  1074.  
  1075. synth_tab_window
  1076.     dc    $000000,$fff8c1,$003540,$ff8d41,$01fd40,$faf7c1,$066b80,$db63c1
  1077.     dc    $494780,$249c40,$066b80,$050840,$01fd40,$0072c0,$003540,$000740
  1078.     dc    $ffffc1,$fff841,$003680,$ff7e41,$01f400,$fa9cc1,$05d1c0,$d99601
  1079.     dc    $493c00,$22ce00,$06f780,$04ad00,$0203c0,$006440,$003400,$000680
  1080.     dc    $ffffc1,$fff741,$003780,$ff6ec1,$01e800,$fa4241,$052a00,$d7ca01
  1081.     dc    $491a00,$20ffc0,$077600,$045240,$020800,$0056c0,$003280,$000600
  1082.     dc    $ffffc1,$fff681,$003840,$ff5ec1,$01d940,$f9e8c1,$047440,$d60081
  1083.     dc    $48e180,$1f32c0,$07e700,$03f7c0,$0209c0,$004980,$003100,$000540
  1084.     dc    $ffffc1,$fff5c1,$0038c0,$ff4e41,$01c780,$f990c1,$03b000,$d43ac1
  1085.     dc    $489240,$1d6800,$084b00,$039e40,$020940,$003d00,$002f80,$0004c0
  1086.     dc    $ffffc1,$fff4c1,$003900,$ff3d41,$01b2c0,$f93a41,$02ddc0,$d279c1
  1087.     dc    $482d00,$1ba040,$08a200,$0345c0,$0206c0,$003140,$002dc0,$000440
  1088.     dc    $ffffc1,$fff3c1,$003900,$ff2c01,$019b00,$f8e641,$01fd40,$d0be81
  1089.     dc    $47b1c0,$19dc80,$08ecc0,$02ef00,$020240,$002640,$002c00,$000400
  1090.     dc    $ffff81,$fff2c1,$0038c0,$ff1a41,$017fc0,$f894c1,$010e80,$cf09c1
  1091.     dc    $4720c0,$181d80,$092b40,$0299c0,$01fc00,$001bc0,$002a40,$000380
  1092.     dc    $ffff81,$fff181,$003800,$ff0841,$016180,$f84681,$001180,$cd5cc1
  1093.     dc    $467a40,$166440,$095e00,$024680,$01f440,$001200,$002840,$000340
  1094.     dc    $ffff81,$fff041,$003740,$fef601,$014000,$f7fbc1,$ff0681,$cbb881
  1095.     dc    $45bf00,$14b140,$098580,$01f580,$01ea80,$000900,$002680,$0002c0
  1096.     dc    $ffff81,$ffef01,$0035c0,$fee3c1,$011ac0,$f7b541,$fded81,$ca1d81
  1097.     dc    $44ef80,$130580,$09a1c0,$01a700,$01dfc0,$000080,$0024c0,$000280
  1098.     dc    $ffff41,$ffedc1,$003400,$fed181,$00f280,$f77341,$fcc701,$c88d81
  1099.     dc    $440bc0,$1161c0,$09b3c0,$015b00,$01d380,$fff8c1,$0022c0,$000240
  1100.     dc    $ffff41,$ffec41,$003200,$febf41,$00c680,$f73681,$fb92c1,$c708c1
  1101.     dc    $431500,$0fc6c0,$09bb80,$0111c0,$01c640,$fff1c1,$002100,$000200
  1102.     dc    $ffff01,$ffeac1,$002f40,$fead01,$009740,$f6ff41,$fa5181,$c59081
  1103.     dc    $420b40,$0e3500,$09b9c0,$00cb80,$01b7c0,$ffeb41,$001f40,$0001c0
  1104.     dc    $ffff01,$ffe941,$002c40,$fe9b01,$006480,$f6ce01,$f90381,$c425c1
  1105.     dc    $40ef80,$0cad00,$09af00,$008840,$01a880,$ffe581,$001d40,$0001c0
  1106.     dc    $fffec1,$ffe7c1,$0028c0,$fe8981,$002e40,$f6a3c1,$f7a901,$c2c901
  1107.     dc    $3fc280,$0b2fc0,$099b80,$004800,$019880,$ffe041,$001bc0,$000180
  1108.     dc    $fffec1,$ffe601,$002480,$fe7841,$fff4c1,$f68041,$f64241,$c17b41
  1109.     dc    $3e84c0,$09bdc0,$097fc0,$000b40,$0187c0,$ffdb81,$001a00,$000140
  1110.     dc    $fffe81,$ffe441,$001fc0,$fe6781,$ffb801,$f66481,$f4d041,$c03d81
  1111.     dc    $3d3700,$085700,$095c40,$ffd1c1,$017680,$ffd741,$001840,$000140
  1112.     dc    $fffe41,$ffe2c1,$001a80,$fe5781,$ff77c1,$f65101,$f35301,$bf1081
  1113.     dc    $3bda40,$06fc80,$093200,$ff9b81,$016500,$ffd3c1,$0016c0,$000100
  1114.     dc    $fffe41,$ffe0c1,$0014c0,$fe4841,$ff3481,$f64641,$f1cb01,$bdf4c1
  1115.     dc    $3a6f80,$05ae80,$0900c0,$ff68c1,$015300,$ffd0c1,$001540,$000100
  1116.     dc    $fffe01,$ffdf01,$000e40,$fe39c1,$feee41,$f64481,$f03941,$bceb01
  1117.     dc    $38f740,$046d40,$08c980,$ff3981,$0140c0,$ffce01,$0013c0,$0000c0
  1118.     dc    $fffdc1,$ffdd41,$000740,$fe2c81,$fea501,$f64c41,$ee9e41,$bbf441
  1119.     dc    $377280,$033900,$088cc0,$ff0d81,$012e80,$ffcc01,$001240,$0000c0
  1120.     dc    $fffd81,$ffdb41,$ffff81,$fe2041,$fe5901,$f65e41,$ecfa81,$bb1081
  1121.     dc    $35e280,$021280,$084ac0,$fee541,$011c40,$ffca41,$001100,$000080
  1122.     dc    $fffd41,$ffd981,$fff701,$fe1581,$fe0a81,$f67a81,$eb4ec1,$ba4101
  1123.     dc    $344780,$00f980,$080440,$fec001,$010a00,$ffc8c1,$000fc0,$000080
  1124.     dc    $fffcc1,$ffd7c1,$ffee01,$fe0bc1,$fdb981,$f6a201,$e99bc1,$b985c1
  1125.     dc    $32a340,$ffee81,$07b980,$fe9e81,$00f7c0,$ffc801,$000e80,$000080
  1126.     dc    $fffc81,$ffd5c1,$ffe441,$fe0401,$fd6641,$f6d4c1,$e7e281,$b8df41
  1127.     dc    $30f640,$fef181,$076b40,$fe8041,$00e5c0,$ffc741,$000d40,$000080
  1128.     dc    $fffc01,$ffd401,$ffd9c1,$fdfdc1,$fd1101,$f71341,$e62381,$b84e41
  1129.     dc    $2f4180,$fe02c1,$0719c0,$fe6501,$00d400,$ffc701,$000c40,$000040
  1130.     dc    $fffbc1,$ffd241,$ffcec1,$fdf941,$fcba41,$f75e01,$e45fc1,$b7d301
  1131.     dc    $2d8640,$fd2241,$06c5c0,$fe4d41,$00c2c0,$ffc701,$000b40,$000040
  1132.     dc    $fffb41,$ffd081,$ffc301,$fdf6c1,$fc61c1,$f7b501,$e29801,$b76dc1
  1133.     dc    $2bc540,$fc5001,$066f40,$fe3881,$00b1c0,$ffc741,$000a40,$000040
  1134.     dc    $fffac1,$ffcf01,$ffb681,$fdf641,$fc0841,$f81901,$e0cd41,$b71e81
  1135.     dc    $29ff80,$fb8bc1,$061740,$fe26c1,$00a140,$ffc7c1,$000980,$000040
  1136.     dc    $fffa01,$ffcd81,$ffa941,$fdf801,$fbadc1,$f88a01,$df0041,$b6e601
  1137.     dc    $283600,$fad601,$05bdc0,$fe1801,$009140,$ffc881,$0008c0,$000040
  1138.     dc    $fff981,$ffcc01,$ff9bc1,$fdfc41,$fb5301,$f90881,$dd3201,$b6c401
  1139.     dc    $266a00,$fa2e41,$056340,$fe0c01,$0081c0,$ffc981,$0007c0,$000040
  1140. synth_tab_sinx
  1141.     dc    0.000000,0.049068,0.098017,0.146730    ;sine only
  1142.     dc    0.195090,0.242980,0.290285,0.336890
  1143.     dc    0.382683,0.427555,0.471397,0.514103
  1144.     dc    0.555570,0.595699,0.634393,0.671559
  1145.     dc    0.707107,0.740951,0.773010,0.803208
  1146.     dc    0.831470,0.857729,0.881921,0.903989
  1147.     dc    0.923880,0.941544,0.956940,0.970031
  1148.     dc    0.980785,0.989177,0.995185,0.998795
  1149. synth_tab_cosx
  1150.     dc    0.999999,0.998795,0.995185,0.989177    ;sine and cosine
  1151.     dc    0.980785,0.970031,0.956940,0.941544
  1152.     dc    0.923880,0.903989,0.881921,0.857729
  1153.     dc    0.831470,0.803208,0.773010,0.740951
  1154.     dc    0.707107,0.671559,0.634393,0.595699
  1155.     dc    0.555570,0.514103,0.471397,0.427555
  1156.     dc    0.382683,0.336890,0.290285,0.242980
  1157.     dc    0.195090,0.146730,0.098017,0.049068
  1158.     dc    0.000000,-0.049068,-0.098017,-0.146730    ;cosine only
  1159.     dc    -0.195090,-0.242980,-0.290285,-0.336890
  1160.     dc    -0.382683,-0.427555,-0.471397,-0.514103
  1161.     dc    -0.555570,-0.595699,-0.634393,-0.671559
  1162.     dc    -0.707107,-0.740951,-0.773010,-0.803208
  1163.     dc    -0.831470,-0.857729,-0.881921,-0.903989
  1164.     dc    -0.923880,-0.941544,-0.956940,-0.970031
  1165.     dc    -0.980785,-0.989177,-0.995185,-0.998795
  1166.  
  1167.  
  1168. ;; Sampling grouping tables.
  1169. table_grouping
  1170.     dc    table_quantization_group_0
  1171.     dc    table_quantization_group_1
  1172.     dc    0
  1173.     dc    table_quantization_group_3
  1174. table_quantization_group_0
  1175.     dc    $d55557,$d55557,$d55557,$000000,$d55557,$d55557,$2aaaaa,$d55557,$d55557,$d55557,$000000,$d55557
  1176.     dc    $000000,$000000,$d55557,$2aaaaa,$000000,$d55557,$d55557,$2aaaaa,$d55557,$000000,$2aaaaa,$d55557
  1177.     dc    $2aaaaa,$2aaaaa,$d55557,$d55557,$d55557,$000000,$000000,$d55557,$000000,$2aaaaa,$d55557,$000000
  1178.     dc    $d55557,$000000,$000000,$000000,$000000,$000000,$2aaaaa,$000000,$000000,$d55557,$2aaaaa,$000000
  1179.     dc    $000000,$2aaaaa,$000000,$2aaaaa,$2aaaaa,$000000,$d55557,$d55557,$2aaaaa,$000000,$d55557,$2aaaaa
  1180.     dc    $2aaaaa,$d55557,$2aaaaa,$d55557,$000000,$2aaaaa,$000000,$000000,$2aaaaa,$2aaaaa,$000000,$2aaaaa
  1181.     dc    $d55557,$2aaaaa,$2aaaaa,$000000,$2aaaaa,$2aaaaa,$2aaaaa,$2aaaaa,$2aaaaa,$d55557,$d55557,$d55557
  1182.     dc    $000000,$d55557,$d55557,$2aaaaa,$d55557,$d55557,$d55557,$000000,$d55557,$000000,$000000,$d55557
  1183. table_quantization_group_1
  1184.     dc    $ccccce,$ccccce,$ccccce,$e66668,$ccccce,$ccccce,$000000,$ccccce,$ccccce,$199999,$ccccce,$ccccce
  1185.     dc    $333333,$ccccce,$ccccce,$ccccce,$e66668,$ccccce,$e66668,$e66668,$ccccce,$000000,$e66668,$ccccce
  1186.     dc    $199999,$e66668,$ccccce,$333333,$e66668,$ccccce,$ccccce,$000000,$ccccce,$e66668,$000000,$ccccce
  1187.     dc    $000000,$000000,$ccccce,$199999,$000000,$ccccce,$333333,$000000,$ccccce,$ccccce,$199999,$ccccce
  1188.     dc    $e66668,$199999,$ccccce,$000000,$199999,$ccccce,$199999,$199999,$ccccce,$333333,$199999,$ccccce
  1189.     dc    $ccccce,$333333,$ccccce,$e66668,$333333,$ccccce,$000000,$333333,$ccccce,$199999,$333333,$ccccce
  1190.     dc    $333333,$333333,$ccccce,$ccccce,$ccccce,$e66668,$e66668,$ccccce,$e66668,$000000,$ccccce,$e66668
  1191.     dc    $199999,$ccccce,$e66668,$333333,$ccccce,$e66668,$ccccce,$e66668,$e66668,$e66668,$e66668,$e66668
  1192.     dc    $000000,$e66668,$e66668,$199999,$e66668,$e66668,$333333,$e66668,$e66668,$ccccce,$000000,$e66668
  1193.     dc    $e66668,$000000,$e66668,$000000,$000000,$e66668,$199999,$000000,$e66668,$333333,$000000,$e66668
  1194.     dc    $ccccce,$199999,$e66668,$e66668,$199999,$e66668,$000000,$199999,$e66668,$199999,$199999,$e66668
  1195.     dc    $333333,$199999,$e66668,$ccccce,$333333,$e66668,$e66668,$333333,$e66668,$000000,$333333,$e66668
  1196.     dc    $199999,$333333,$e66668,$333333,$333333,$e66668,$ccccce,$ccccce,$000000,$e66668,$ccccce,$000000
  1197.     dc    $000000,$ccccce,$000000,$199999,$ccccce,$000000,$333333,$ccccce,$000000,$ccccce,$e66668,$000000
  1198.     dc    $e66668,$e66668,$000000,$000000,$e66668,$000000,$199999,$e66668,$000000,$333333,$e66668,$000000
  1199.     dc    $ccccce,$000000,$000000,$e66668,$000000,$000000,$000000,$000000,$000000,$199999,$000000,$000000
  1200.     dc    $333333,$000000,$000000,$ccccce,$199999,$000000,$e66668,$199999,$000000,$000000,$199999,$000000
  1201.     dc    $199999,$199999,$000000,$333333,$199999,$000000,$ccccce,$333333,$000000,$e66668,$333333,$000000
  1202.     dc    $000000,$333333,$000000,$199999,$333333,$000000,$333333,$333333,$000000,$ccccce,$ccccce,$199999
  1203.     dc    $e66668,$ccccce,$199999,$000000,$ccccce,$199999,$199999,$ccccce,$199999,$333333,$ccccce,$199999
  1204.     dc    $ccccce,$e66668,$199999,$e66668,$e66668,$199999,$000000,$e66668,$199999,$199999,$e66668,$199999
  1205.     dc    $333333,$e66668,$199999,$ccccce,$000000,$199999,$e66668,$000000,$199999,$000000,$000000,$199999
  1206.     dc    $199999,$000000,$199999,$333333,$000000,$199999,$ccccce,$199999,$199999,$e66668,$199999,$199999
  1207.     dc    $000000,$199999,$199999,$199999,$199999,$199999,$333333,$199999,$199999,$ccccce,$333333,$199999
  1208.     dc    $e66668,$333333,$199999,$000000,$333333,$199999,$199999,$333333,$199999,$333333,$333333,$199999
  1209.     dc    $ccccce,$ccccce,$333333,$e66668,$ccccce,$333333,$000000,$ccccce,$333333,$199999,$ccccce,$333333
  1210.     dc    $333333,$ccccce,$333333,$ccccce,$e66668,$333333,$e66668,$e66668,$333333,$000000,$e66668,$333333
  1211.     dc    $199999,$e66668,$333333,$333333,$e66668,$333333,$ccccce,$000000,$333333,$e66668,$000000,$333333
  1212.     dc    $000000,$000000,$333333,$199999,$000000,$333333,$333333,$000000,$333333,$ccccce,$199999,$333333
  1213.     dc    $e66668,$199999,$333333,$000000,$199999,$333333,$199999,$199999,$333333,$333333,$199999,$333333
  1214.     dc    $ccccce,$333333,$333333,$e66668,$333333,$333333,$000000,$333333,$333333,$199999,$333333,$333333
  1215.     dc    $333333,$333333,$333333,$ccccce,$ccccce,$ccccce,$e66668,$ccccce,$ccccce,$000000,$ccccce,$ccccce
  1216. table_quantization_group_3
  1217.     dc    $c71c73,$c71c73,$c71c73,$d55557,$c71c73,$c71c73,$e38e3a,$c71c73,$c71c73,$f1c71e,$c71c73,$c71c73
  1218.     dc    $000000,$c71c73,$c71c73,$0e38e3,$c71c73,$c71c73,$1c71c7,$c71c73,$c71c73,$2aaaaa,$c71c73,$c71c73
  1219.     dc    $38e38e,$c71c73,$c71c73,$c71c73,$d55557,$c71c73,$d55557,$d55557,$c71c73,$e38e3a,$d55557,$c71c73
  1220.     dc    $f1c71e,$d55557,$c71c73,$000000,$d55557,$c71c73,$0e38e3,$d55557,$c71c73,$1c71c7,$d55557,$c71c73
  1221.     dc    $2aaaaa,$d55557,$c71c73,$38e38e,$d55557,$c71c73,$c71c73,$e38e3a,$c71c73,$d55557,$e38e3a,$c71c73
  1222.     dc    $e38e3a,$e38e3a,$c71c73,$f1c71e,$e38e3a,$c71c73,$000000,$e38e3a,$c71c73,$0e38e3,$e38e3a,$c71c73
  1223.     dc    $1c71c7,$e38e3a,$c71c73,$2aaaaa,$e38e3a,$c71c73,$38e38e,$e38e3a,$c71c73,$c71c73,$f1c71e,$c71c73
  1224.     dc    $d55557,$f1c71e,$c71c73,$e38e3a,$f1c71e,$c71c73,$f1c71e,$f1c71e,$c71c73,$000000,$f1c71e,$c71c73
  1225.     dc    $0e38e3,$f1c71e,$c71c73,$1c71c7,$f1c71e,$c71c73,$2aaaaa,$f1c71e,$c71c73,$38e38e,$f1c71e,$c71c73
  1226.     dc    $c71c73,$000000,$c71c73,$d55557,$000000,$c71c73,$e38e3a,$000000,$c71c73,$f1c71e,$000000,$c71c73
  1227.     dc    $000000,$000000,$c71c73,$0e38e3,$000000,$c71c73,$1c71c7,$000000,$c71c73,$2aaaaa,$000000,$c71c73
  1228.     dc    $38e38e,$000000,$c71c73,$c71c73,$0e38e3,$c71c73,$d55557,$0e38e3,$c71c73,$e38e3a,$0e38e3,$c71c73
  1229.     dc    $f1c71e,$0e38e3,$c71c73,$000000,$0e38e3,$c71c73,$0e38e3,$0e38e3,$c71c73,$1c71c7,$0e38e3,$c71c73
  1230.     dc    $2aaaaa,$0e38e3,$c71c73,$38e38e,$0e38e3,$c71c73,$c71c73,$1c71c7,$c71c73,$d55557,$1c71c7,$c71c73
  1231.     dc    $e38e3a,$1c71c7,$c71c73,$f1c71e,$1c71c7,$c71c73,$000000,$1c71c7,$c71c73,$0e38e3,$1c71c7,$c71c73
  1232.     dc    $1c71c7,$1c71c7,$c71c73,$2aaaaa,$1c71c7,$c71c73,$38e38e,$1c71c7,$c71c73,$c71c73,$2aaaaa,$c71c73
  1233.     dc    $d55557,$2aaaaa,$c71c73,$e38e3a,$2aaaaa,$c71c73,$f1c71e,$2aaaaa,$c71c73,$000000,$2aaaaa,$c71c73
  1234.     dc    $0e38e3,$2aaaaa,$c71c73,$1c71c7,$2aaaaa,$c71c73,$2aaaaa,$2aaaaa,$c71c73,$38e38e,$2aaaaa,$c71c73
  1235.     dc    $c71c73,$38e38e,$c71c73,$d55557,$38e38e,$c71c73,$e38e3a,$38e38e,$c71c73,$f1c71e,$38e38e,$c71c73
  1236.     dc    $000000,$38e38e,$c71c73,$0e38e3,$38e38e,$c71c73,$1c71c7,$38e38e,$c71c73,$2aaaaa,$38e38e,$c71c73
  1237.     dc    $38e38e,$38e38e,$c71c73,$c71c73,$c71c73,$d55557,$d55557,$c71c73,$d55557,$e38e3a,$c71c73,$d55557
  1238.     dc    $f1c71e,$c71c73,$d55557,$000000,$c71c73,$d55557,$0e38e3,$c71c73,$d55557,$1c71c7,$c71c73,$d55557
  1239.     dc    $2aaaaa,$c71c73,$d55557,$38e38e,$c71c73,$d55557,$c71c73,$d55557,$d55557,$d55557,$d55557,$d55557
  1240.     dc    $e38e3a,$d55557,$d55557,$f1c71e,$d55557,$d55557,$000000,$d55557,$d55557,$0e38e3,$d55557,$d55557
  1241.     dc    $1c71c7,$d55557,$d55557,$2aaaaa,$d55557,$d55557,$38e38e,$d55557,$d55557,$c71c73,$e38e3a,$d55557
  1242.     dc    $d55557,$e38e3a,$d55557,$e38e3a,$e38e3a,$d55557,$f1c71e,$e38e3a,$d55557,$000000,$e38e3a,$d55557
  1243.     dc    $0e38e3,$e38e3a,$d55557,$1c71c7,$e38e3a,$d55557,$2aaaaa,$e38e3a,$d55557,$38e38e,$e38e3a,$d55557
  1244.     dc    $c71c73,$f1c71e,$d55557,$d55557,$f1c71e,$d55557,$e38e3a,$f1c71e,$d55557,$f1c71e,$f1c71e,$d55557
  1245.     dc    $000000,$f1c71e,$d55557,$0e38e3,$f1c71e,$d55557,$1c71c7,$f1c71e,$d55557,$2aaaaa,$f1c71e,$d55557
  1246.     dc    $38e38e,$f1c71e,$d55557,$c71c73,$000000,$d55557,$d55557,$000000,$d55557,$e38e3a,$000000,$d55557
  1247.     dc    $f1c71e,$000000,$d55557,$000000,$000000,$d55557,$0e38e3,$000000,$d55557,$1c71c7,$000000,$d55557
  1248.     dc    $2aaaaa,$000000,$d55557,$38e38e,$000000,$d55557,$c71c73,$0e38e3,$d55557,$d55557,$0e38e3,$d55557
  1249.     dc    $e38e3a,$0e38e3,$d55557,$f1c71e,$0e38e3,$d55557,$000000,$0e38e3,$d55557,$0e38e3,$0e38e3,$d55557
  1250.     dc    $1c71c7,$0e38e3,$d55557,$2aaaaa,$0e38e3,$d55557,$38e38e,$0e38e3,$d55557,$c71c73,$1c71c7,$d55557
  1251.     dc    $d55557,$1c71c7,$d55557,$e38e3a,$1c71c7,$d55557,$f1c71e,$1c71c7,$d55557,$000000,$1c71c7,$d55557
  1252.     dc    $0e38e3,$1c71c7,$d55557,$1c71c7,$1c71c7,$d55557,$2aaaaa,$1c71c7,$d55557,$38e38e,$1c71c7,$d55557
  1253.     dc    $c71c73,$2aaaaa,$d55557,$d55557,$2aaaaa,$d55557,$e38e3a,$2aaaaa,$d55557,$f1c71e,$2aaaaa,$d55557
  1254.     dc    $000000,$2aaaaa,$d55557,$0e38e3,$2aaaaa,$d55557,$1c71c7,$2aaaaa,$d55557,$2aaaaa,$2aaaaa,$d55557
  1255.     dc    $38e38e,$2aaaaa,$d55557,$c71c73,$38e38e,$d55557,$d55557,$38e38e,$d55557,$e38e3a,$38e38e,$d55557
  1256.     dc    $f1c71e,$38e38e,$d55557,$000000,$38e38e,$d55557,$0e38e3,$38e38e,$d55557,$1c71c7,$38e38e,$d55557
  1257.     dc    $2aaaaa,$38e38e,$d55557,$38e38e,$38e38e,$d55557,$c71c73,$c71c73,$e38e3a,$d55557,$c71c73,$e38e3a
  1258.     dc    $e38e3a,$c71c73,$e38e3a,$f1c71e,$c71c73,$e38e3a,$000000,$c71c73,$e38e3a,$0e38e3,$c71c73,$e38e3a
  1259.     dc    $1c71c7,$c71c73,$e38e3a,$2aaaaa,$c71c73,$e38e3a,$38e38e,$c71c73,$e38e3a,$c71c73,$d55557,$e38e3a
  1260.     dc    $d55557,$d55557,$e38e3a,$e38e3a,$d55557,$e38e3a,$f1c71e,$d55557,$e38e3a,$000000,$d55557,$e38e3a
  1261.     dc    $0e38e3,$d55557,$e38e3a,$1c71c7,$d55557,$e38e3a,$2aaaaa,$d55557,$e38e3a,$38e38e,$d55557,$e38e3a
  1262.     dc    $c71c73,$e38e3a,$e38e3a,$d55557,$e38e3a,$e38e3a,$e38e3a,$e38e3a,$e38e3a,$f1c71e,$e38e3a,$e38e3a
  1263.     dc    $000000,$e38e3a,$e38e3a,$0e38e3,$e38e3a,$e38e3a,$1c71c7,$e38e3a,$e38e3a,$2aaaaa,$e38e3a,$e38e3a
  1264.     dc    $38e38e,$e38e3a,$e38e3a,$c71c73,$f1c71e,$e38e3a,$d55557,$f1c71e,$e38e3a,$e38e3a,$f1c71e,$e38e3a
  1265.     dc    $f1c71e,$f1c71e,$e38e3a,$000000,$f1c71e,$e38e3a,$0e38e3,$f1c71e,$e38e3a,$1c71c7,$f1c71e,$e38e3a
  1266.     dc    $2aaaaa,$f1c71e,$e38e3a,$38e38e,$f1c71e,$e38e3a,$c71c73,$000000,$e38e3a,$d55557,$000000,$e38e3a
  1267.     dc    $e38e3a,$000000,$e38e3a,$f1c71e,$000000,$e38e3a,$000000,$000000,$e38e3a,$0e38e3,$000000,$e38e3a
  1268.     dc    $1c71c7,$000000,$e38e3a,$2aaaaa,$000000,$e38e3a,$38e38e,$000000,$e38e3a,$c71c73,$0e38e3,$e38e3a
  1269.     dc    $d55557,$0e38e3,$e38e3a,$e38e3a,$0e38e3,$e38e3a,$f1c71e,$0e38e3,$e38e3a,$000000,$0e38e3,$e38e3a
  1270.     dc    $0e38e3,$0e38e3,$e38e3a,$1c71c7,$0e38e3,$e38e3a,$2aaaaa,$0e38e3,$e38e3a,$38e38e,$0e38e3,$e38e3a
  1271.     dc    $c71c73,$1c71c7,$e38e3a,$d55557,$1c71c7,$e38e3a,$e38e3a,$1c71c7,$e38e3a,$f1c71e,$1c71c7,$e38e3a
  1272.     dc    $000000,$1c71c7,$e38e3a,$0e38e3,$1c71c7,$e38e3a,$1c71c7,$1c71c7,$e38e3a,$2aaaaa,$1c71c7,$e38e3a
  1273.     dc    $38e38e,$1c71c7,$e38e3a,$c71c73,$2aaaaa,$e38e3a,$d55557,$2aaaaa,$e38e3a,$e38e3a,$2aaaaa,$e38e3a
  1274.     dc    $f1c71e,$2aaaaa,$e38e3a,$000000,$2aaaaa,$e38e3a,$0e38e3,$2aaaaa,$e38e3a,$1c71c7,$2aaaaa,$e38e3a
  1275.     dc    $2aaaaa,$2aaaaa,$e38e3a,$38e38e,$2aaaaa,$e38e3a,$c71c73,$38e38e,$e38e3a,$d55557,$38e38e,$e38e3a
  1276.     dc    $e38e3a,$38e38e,$e38e3a,$f1c71e,$38e38e,$e38e3a,$000000,$38e38e,$e38e3a,$0e38e3,$38e38e,$e38e3a
  1277.     dc    $1c71c7,$38e38e,$e38e3a,$2aaaaa,$38e38e,$e38e3a,$38e38e,$38e38e,$e38e3a,$c71c73,$c71c73,$f1c71e
  1278.     dc    $d55557,$c71c73,$f1c71e,$e38e3a,$c71c73,$f1c71e,$f1c71e,$c71c73,$f1c71e,$000000,$c71c73,$f1c71e
  1279.     dc    $0e38e3,$c71c73,$f1c71e,$1c71c7,$c71c73,$f1c71e,$2aaaaa,$c71c73,$f1c71e,$38e38e,$c71c73,$f1c71e
  1280.     dc    $c71c73,$d55557,$f1c71e,$d55557,$d55557,$f1c71e,$e38e3a,$d55557,$f1c71e,$f1c71e,$d55557,$f1c71e
  1281.     dc    $000000,$d55557,$f1c71e,$0e38e3,$d55557,$f1c71e,$1c71c7,$d55557,$f1c71e,$2aaaaa,$d55557,$f1c71e
  1282.     dc    $38e38e,$d55557,$f1c71e,$c71c73,$e38e3a,$f1c71e,$d55557,$e38e3a,$f1c71e,$e38e3a,$e38e3a,$f1c71e
  1283.     dc    $f1c71e,$e38e3a,$f1c71e,$000000,$e38e3a,$f1c71e,$0e38e3,$e38e3a,$f1c71e,$1c71c7,$e38e3a,$f1c71e
  1284.     dc    $2aaaaa,$e38e3a,$f1c71e,$38e38e,$e38e3a,$f1c71e,$c71c73,$f1c71e,$f1c71e,$d55557,$f1c71e,$f1c71e
  1285.     dc    $e38e3a,$f1c71e,$f1c71e,$f1c71e,$f1c71e,$f1c71e,$000000,$f1c71e,$f1c71e,$0e38e3,$f1c71e,$f1c71e
  1286.     dc    $1c71c7,$f1c71e,$f1c71e,$2aaaaa,$f1c71e,$f1c71e,$38e38e,$f1c71e,$f1c71e,$c71c73,$000000,$f1c71e
  1287.     dc    $d55557,$000000,$f1c71e,$e38e3a,$000000,$f1c71e,$f1c71e,$000000,$f1c71e,$000000,$000000,$f1c71e
  1288.     dc    $0e38e3,$000000,$f1c71e,$1c71c7,$000000,$f1c71e,$2aaaaa,$000000,$f1c71e,$38e38e,$000000,$f1c71e
  1289.     dc    $c71c73,$0e38e3,$f1c71e,$d55557,$0e38e3,$f1c71e,$e38e3a,$0e38e3,$f1c71e,$f1c71e,$0e38e3,$f1c71e
  1290.     dc    $000000,$0e38e3,$f1c71e,$0e38e3,$0e38e3,$f1c71e,$1c71c7,$0e38e3,$f1c71e,$2aaaaa,$0e38e3,$f1c71e
  1291.     dc    $38e38e,$0e38e3,$f1c71e,$c71c73,$1c71c7,$f1c71e,$d55557,$1c71c7,$f1c71e,$e38e3a,$1c71c7,$f1c71e
  1292.     dc    $f1c71e,$1c71c7,$f1c71e,$000000,$1c71c7,$f1c71e,$0e38e3,$1c71c7,$f1c71e,$1c71c7,$1c71c7,$f1c71e
  1293.     dc    $2aaaaa,$1c71c7,$f1c71e,$38e38e,$1c71c7,$f1c71e,$c71c73,$2aaaaa,$f1c71e,$d55557,$2aaaaa,$f1c71e
  1294.     dc    $e38e3a,$2aaaaa,$f1c71e,$f1c71e,$2aaaaa,$f1c71e,$000000,$2aaaaa,$f1c71e,$0e38e3,$2aaaaa,$f1c71e
  1295.     dc    $1c71c7,$2aaaaa,$f1c71e,$2aaaaa,$2aaaaa,$f1c71e,$38e38e,$2aaaaa,$f1c71e,$c71c73,$38e38e,$f1c71e
  1296.     dc    $d55557,$38e38e,$f1c71e,$e38e3a,$38e38e,$f1c71e,$f1c71e,$38e38e,$f1c71e,$000000,$38e38e,$f1c71e
  1297.     dc    $0e38e3,$38e38e,$f1c71e,$1c71c7,$38e38e,$f1c71e,$2aaaaa,$38e38e,$f1c71e,$38e38e,$38e38e,$f1c71e
  1298.     dc    $c71c73,$c71c73,$000000,$d55557,$c71c73,$000000,$e38e3a,$c71c73,$000000,$f1c71e,$c71c73,$000000
  1299.     dc    $000000,$c71c73,$000000,$0e38e3,$c71c73,$000000,$1c71c7,$c71c73,$000000,$2aaaaa,$c71c73,$000000
  1300.     dc    $38e38e,$c71c73,$000000,$c71c73,$d55557,$000000,$d55557,$d55557,$000000,$e38e3a,$d55557,$000000
  1301.     dc    $f1c71e,$d55557,$000000,$000000,$d55557,$000000,$0e38e3,$d55557,$000000,$1c71c7,$d55557,$000000
  1302.     dc    $2aaaaa,$d55557,$000000,$38e38e,$d55557,$000000,$c71c73,$e38e3a,$000000,$d55557,$e38e3a,$000000
  1303.     dc    $e38e3a,$e38e3a,$000000,$f1c71e,$e38e3a,$000000,$000000,$e38e3a,$000000,$0e38e3,$e38e3a,$000000
  1304.     dc    $1c71c7,$e38e3a,$000000,$2aaaaa,$e38e3a,$000000,$38e38e,$e38e3a,$000000,$c71c73,$f1c71e,$000000
  1305.     dc    $d55557,$f1c71e,$000000,$e38e3a,$f1c71e,$000000,$f1c71e,$f1c71e,$000000,$000000,$f1c71e,$000000
  1306.     dc    $0e38e3,$f1c71e,$000000,$1c71c7,$f1c71e,$000000,$2aaaaa,$f1c71e,$000000,$38e38e,$f1c71e,$000000
  1307.     dc    $c71c73,$000000,$000000,$d55557,$000000,$000000,$e38e3a,$000000,$000000,$f1c71e,$000000,$000000
  1308.     dc    $000000,$000000,$000000,$0e38e3,$000000,$000000,$1c71c7,$000000,$000000,$2aaaaa,$000000,$000000
  1309.     dc    $38e38e,$000000,$000000,$c71c73,$0e38e3,$000000,$d55557,$0e38e3,$000000,$e38e3a,$0e38e3,$000000
  1310.     dc    $f1c71e,$0e38e3,$000000,$000000,$0e38e3,$000000,$0e38e3,$0e38e3,$000000,$1c71c7,$0e38e3,$000000
  1311.     dc    $2aaaaa,$0e38e3,$000000,$38e38e,$0e38e3,$000000,$c71c73,$1c71c7,$000000,$d55557,$1c71c7,$000000
  1312.     dc    $e38e3a,$1c71c7,$000000,$f1c71e,$1c71c7,$000000,$000000,$1c71c7,$000000,$0e38e3,$1c71c7,$000000
  1313.     dc    $1c71c7,$1c71c7,$000000,$2aaaaa,$1c71c7,$000000,$38e38e,$1c71c7,$000000,$c71c73,$2aaaaa,$000000
  1314.     dc    $d55557,$2aaaaa,$000000,$e38e3a,$2aaaaa,$000000,$f1c71e,$2aaaaa,$000000,$000000,$2aaaaa,$000000
  1315.     dc    $0e38e3,$2aaaaa,$000000,$1c71c7,$2aaaaa,$000000,$2aaaaa,$2aaaaa,$000000,$38e38e,$2aaaaa,$000000
  1316.     dc    $c71c73,$38e38e,$000000,$d55557,$38e38e,$000000,$e38e3a,$38e38e,$000000,$f1c71e,$38e38e,$000000
  1317.     dc    $000000,$38e38e,$000000,$0e38e3,$38e38e,$000000,$1c71c7,$38e38e,$000000,$2aaaaa,$38e38e,$000000
  1318.     dc    $38e38e,$38e38e,$000000,$c71c73,$c71c73,$0e38e3,$d55557,$c71c73,$0e38e3,$e38e3a,$c71c73,$0e38e3
  1319.     dc    $f1c71e,$c71c73,$0e38e3,$000000,$c71c73,$0e38e3,$0e38e3,$c71c73,$0e38e3,$1c71c7,$c71c73,$0e38e3
  1320.     dc    $2aaaaa,$c71c73,$0e38e3,$38e38e,$c71c73,$0e38e3,$c71c73,$d55557,$0e38e3,$d55557,$d55557,$0e38e3
  1321.     dc    $e38e3a,$d55557,$0e38e3,$f1c71e,$d55557,$0e38e3,$000000,$d55557,$0e38e3,$0e38e3,$d55557,$0e38e3
  1322.     dc    $1c71c7,$d55557,$0e38e3,$2aaaaa,$d55557,$0e38e3,$38e38e,$d55557,$0e38e3,$c71c73,$e38e3a,$0e38e3
  1323.     dc    $d55557,$e38e3a,$0e38e3,$e38e3a,$e38e3a,$0e38e3,$f1c71e,$e38e3a,$0e38e3,$000000,$e38e3a,$0e38e3
  1324.     dc    $0e38e3,$e38e3a,$0e38e3,$1c71c7,$e38e3a,$0e38e3,$2aaaaa,$e38e3a,$0e38e3,$38e38e,$e38e3a,$0e38e3
  1325.     dc    $c71c73,$f1c71e,$0e38e3,$d55557,$f1c71e,$0e38e3,$e38e3a,$f1c71e,$0e38e3,$f1c71e,$f1c71e,$0e38e3
  1326.     dc    $000000,$f1c71e,$0e38e3,$0e38e3,$f1c71e,$0e38e3,$1c71c7,$f1c71e,$0e38e3,$2aaaaa,$f1c71e,$0e38e3
  1327.     dc    $38e38e,$f1c71e,$0e38e3,$c71c73,$000000,$0e38e3,$d55557,$000000,$0e38e3,$e38e3a,$000000,$0e38e3
  1328.     dc    $f1c71e,$000000,$0e38e3,$000000,$000000,$0e38e3,$0e38e3,$000000,$0e38e3,$1c71c7,$000000,$0e38e3
  1329.     dc    $2aaaaa,$000000,$0e38e3,$38e38e,$000000,$0e38e3,$c71c73,$0e38e3,$0e38e3,$d55557,$0e38e3,$0e38e3
  1330.     dc    $e38e3a,$0e38e3,$0e38e3,$f1c71e,$0e38e3,$0e38e3,$000000,$0e38e3,$0e38e3,$0e38e3,$0e38e3,$0e38e3
  1331.     dc    $1c71c7,$0e38e3,$0e38e3,$2aaaaa,$0e38e3,$0e38e3,$38e38e,$0e38e3,$0e38e3,$c71c73,$1c71c7,$0e38e3
  1332.     dc    $d55557,$1c71c7,$0e38e3,$e38e3a,$1c71c7,$0e38e3,$f1c71e,$1c71c7,$0e38e3,$000000,$1c71c7,$0e38e3
  1333.     dc    $0e38e3,$1c71c7,$0e38e3,$1c71c7,$1c71c7,$0e38e3,$2aaaaa,$1c71c7,$0e38e3,$38e38e,$1c71c7,$0e38e3
  1334.     dc    $c71c73,$2aaaaa,$0e38e3,$d55557,$2aaaaa,$0e38e3,$e38e3a,$2aaaaa,$0e38e3,$f1c71e,$2aaaaa,$0e38e3
  1335.     dc    $000000,$2aaaaa,$0e38e3,$0e38e3,$2aaaaa,$0e38e3,$1c71c7,$2aaaaa,$0e38e3,$2aaaaa,$2aaaaa,$0e38e3
  1336.     dc    $38e38e,$2aaaaa,$0e38e3,$c71c73,$38e38e,$0e38e3,$d55557,$38e38e,$0e38e3,$e38e3a,$38e38e,$0e38e3
  1337.     dc    $f1c71e,$38e38e,$0e38e3,$000000,$38e38e,$0e38e3,$0e38e3,$38e38e,$0e38e3,$1c71c7,$38e38e,$0e38e3
  1338.     dc    $2aaaaa,$38e38e,$0e38e3,$38e38e,$38e38e,$0e38e3,$c71c73,$c71c73,$1c71c7,$d55557,$c71c73,$1c71c7
  1339.     dc    $e38e3a,$c71c73,$1c71c7,$f1c71e,$c71c73,$1c71c7,$000000,$c71c73,$1c71c7,$0e38e3,$c71c73,$1c71c7
  1340.     dc    $1c71c7,$c71c73,$1c71c7,$2aaaaa,$c71c73,$1c71c7,$38e38e,$c71c73,$1c71c7,$c71c73,$d55557,$1c71c7
  1341.     dc    $d55557,$d55557,$1c71c7,$e38e3a,$d55557,$1c71c7,$f1c71e,$d55557,$1c71c7,$000000,$d55557,$1c71c7
  1342.     dc    $0e38e3,$d55557,$1c71c7,$1c71c7,$d55557,$1c71c7,$2aaaaa,$d55557,$1c71c7,$38e38e,$d55557,$1c71c7
  1343.     dc    $c71c73,$e38e3a,$1c71c7,$d55557,$e38e3a,$1c71c7,$e38e3a,$e38e3a,$1c71c7,$f1c71e,$e38e3a,$1c71c7
  1344.     dc    $000000,$e38e3a,$1c71c7,$0e38e3,$e38e3a,$1c71c7,$1c71c7,$e38e3a,$1c71c7,$2aaaaa,$e38e3a,$1c71c7
  1345.     dc    $38e38e,$e38e3a,$1c71c7,$c71c73,$f1c71e,$1c71c7,$d55557,$f1c71e,$1c71c7,$e38e3a,$f1c71e,$1c71c7
  1346.     dc    $f1c71e,$f1c71e,$1c71c7,$000000,$f1c71e,$1c71c7,$0e38e3,$f1c71e,$1c71c7,$1c71c7,$f1c71e,$1c71c7
  1347.     dc    $2aaaaa,$f1c71e,$1c71c7,$38e38e,$f1c71e,$1c71c7,$c71c73,$000000,$1c71c7,$d55557,$000000,$1c71c7
  1348.     dc    $e38e3a,$000000,$1c71c7,$f1c71e,$000000,$1c71c7,$000000,$000000,$1c71c7,$0e38e3,$000000,$1c71c7
  1349.     dc    $1c71c7,$000000,$1c71c7,$2aaaaa,$000000,$1c71c7,$38e38e,$000000,$1c71c7,$c71c73,$0e38e3,$1c71c7
  1350.     dc    $d55557,$0e38e3,$1c71c7,$e38e3a,$0e38e3,$1c71c7,$f1c71e,$0e38e3,$1c71c7,$000000,$0e38e3,$1c71c7
  1351.     dc    $0e38e3,$0e38e3,$1c71c7,$1c71c7,$0e38e3,$1c71c7,$2aaaaa,$0e38e3,$1c71c7,$38e38e,$0e38e3,$1c71c7
  1352.     dc    $c71c73,$1c71c7,$1c71c7,$d55557,$1c71c7,$1c71c7,$e38e3a,$1c71c7,$1c71c7,$f1c71e,$1c71c7,$1c71c7
  1353.     dc    $000000,$1c71c7,$1c71c7,$0e38e3,$1c71c7,$1c71c7,$1c71c7,$1c71c7,$1c71c7,$2aaaaa,$1c71c7,$1c71c7
  1354.     dc    $38e38e,$1c71c7,$1c71c7,$c71c73,$2aaaaa,$1c71c7,$d55557,$2aaaaa,$1c71c7,$e38e3a,$2aaaaa,$1c71c7
  1355.     dc    $f1c71e,$2aaaaa,$1c71c7,$000000,$2aaaaa,$1c71c7,$0e38e3,$2aaaaa,$1c71c7,$1c71c7,$2aaaaa,$1c71c7
  1356.     dc    $2aaaaa,$2aaaaa,$1c71c7,$38e38e,$2aaaaa,$1c71c7,$c71c73,$38e38e,$1c71c7,$d55557,$38e38e,$1c71c7
  1357.     dc    $e38e3a,$38e38e,$1c71c7,$f1c71e,$38e38e,$1c71c7,$000000,$38e38e,$1c71c7,$0e38e3,$38e38e,$1c71c7
  1358.     dc    $1c71c7,$38e38e,$1c71c7,$2aaaaa,$38e38e,$1c71c7,$38e38e,$38e38e,$1c71c7,$c71c73,$c71c73,$2aaaaa
  1359.     dc    $d55557,$c71c73,$2aaaaa,$e38e3a,$c71c73,$2aaaaa,$f1c71e,$c71c73,$2aaaaa,$000000,$c71c73,$2aaaaa
  1360.     dc    $0e38e3,$c71c73,$2aaaaa,$1c71c7,$c71c73,$2aaaaa,$2aaaaa,$c71c73,$2aaaaa,$38e38e,$c71c73,$2aaaaa
  1361.     dc    $c71c73,$d55557,$2aaaaa,$d55557,$d55557,$2aaaaa,$e38e3a,$d55557,$2aaaaa,$f1c71e,$d55557,$2aaaaa
  1362.     dc    $000000,$d55557,$2aaaaa,$0e38e3,$d55557,$2aaaaa,$1c71c7,$d55557,$2aaaaa,$2aaaaa,$d55557,$2aaaaa
  1363.     dc    $38e38e,$d55557,$2aaaaa,$c71c73,$e38e3a,$2aaaaa,$d55557,$e38e3a,$2aaaaa,$e38e3a,$e38e3a,$2aaaaa
  1364.     dc    $f1c71e,$e38e3a,$2aaaaa,$000000,$e38e3a,$2aaaaa,$0e38e3,$e38e3a,$2aaaaa,$1c71c7,$e38e3a,$2aaaaa
  1365.     dc    $2aaaaa,$e38e3a,$2aaaaa,$38e38e,$e38e3a,$2aaaaa,$c71c73,$f1c71e,$2aaaaa,$d55557,$f1c71e,$2aaaaa
  1366.     dc    $e38e3a,$f1c71e,$2aaaaa,$f1c71e,$f1c71e,$2aaaaa,$000000,$f1c71e,$2aaaaa,$0e38e3,$f1c71e,$2aaaaa
  1367.     dc    $1c71c7,$f1c71e,$2aaaaa,$2aaaaa,$f1c71e,$2aaaaa,$38e38e,$f1c71e,$2aaaaa,$c71c73,$000000,$2aaaaa
  1368.     dc    $d55557,$000000,$2aaaaa,$e38e3a,$000000,$2aaaaa,$f1c71e,$000000,$2aaaaa,$000000,$000000,$2aaaaa
  1369.     dc    $0e38e3,$000000,$2aaaaa,$1c71c7,$000000,$2aaaaa,$2aaaaa,$000000,$2aaaaa,$38e38e,$000000,$2aaaaa
  1370.     dc    $c71c73,$0e38e3,$2aaaaa,$d55557,$0e38e3,$2aaaaa,$e38e3a,$0e38e3,$2aaaaa,$f1c71e,$0e38e3,$2aaaaa
  1371.     dc    $000000,$0e38e3,$2aaaaa,$0e38e3,$0e38e3,$2aaaaa,$1c71c7,$0e38e3,$2aaaaa,$2aaaaa,$0e38e3,$2aaaaa
  1372.     dc    $38e38e,$0e38e3,$2aaaaa,$c71c73,$1c71c7,$2aaaaa,$d55557,$1c71c7,$2aaaaa,$e38e3a,$1c71c7,$2aaaaa
  1373.     dc    $f1c71e,$1c71c7,$2aaaaa,$000000,$1c71c7,$2aaaaa,$0e38e3,$1c71c7,$2aaaaa,$1c71c7,$1c71c7,$2aaaaa
  1374.     dc    $2aaaaa,$1c71c7,$2aaaaa,$38e38e,$1c71c7,$2aaaaa,$c71c73,$2aaaaa,$2aaaaa,$d55557,$2aaaaa,$2aaaaa
  1375.     dc    $e38e3a,$2aaaaa,$2aaaaa,$f1c71e,$2aaaaa,$2aaaaa,$000000,$2aaaaa,$2aaaaa,$0e38e3,$2aaaaa,$2aaaaa
  1376.     dc    $1c71c7,$2aaaaa,$2aaaaa,$2aaaaa,$2aaaaa,$2aaaaa,$38e38e,$2aaaaa,$2aaaaa,$c71c73,$38e38e,$2aaaaa
  1377.     dc    $d55557,$38e38e,$2aaaaa,$e38e3a,$38e38e,$2aaaaa,$f1c71e,$38e38e,$2aaaaa,$000000,$38e38e,$2aaaaa
  1378.     dc    $0e38e3,$38e38e,$2aaaaa,$1c71c7,$38e38e,$2aaaaa,$2aaaaa,$38e38e,$2aaaaa,$38e38e,$38e38e,$2aaaaa
  1379.     dc    $c71c73,$c71c73,$38e38e,$d55557,$c71c73,$38e38e,$e38e3a,$c71c73,$38e38e,$f1c71e,$c71c73,$38e38e
  1380.     dc    $000000,$c71c73,$38e38e,$0e38e3,$c71c73,$38e38e,$1c71c7,$c71c73,$38e38e,$2aaaaa,$c71c73,$38e38e
  1381.     dc    $38e38e,$c71c73,$38e38e,$c71c73,$d55557,$38e38e,$d55557,$d55557,$38e38e,$e38e3a,$d55557,$38e38e
  1382.     dc    $f1c71e,$d55557,$38e38e,$000000,$d55557,$38e38e,$0e38e3,$d55557,$38e38e,$1c71c7,$d55557,$38e38e
  1383.     dc    $2aaaaa,$d55557,$38e38e,$38e38e,$d55557,$38e38e,$c71c73,$e38e3a,$38e38e,$d55557,$e38e3a,$38e38e
  1384.     dc    $e38e3a,$e38e3a,$38e38e,$f1c71e,$e38e3a,$38e38e,$000000,$e38e3a,$38e38e,$0e38e3,$e38e3a,$38e38e
  1385.     dc    $1c71c7,$e38e3a,$38e38e,$2aaaaa,$e38e3a,$38e38e,$38e38e,$e38e3a,$38e38e,$c71c73,$f1c71e,$38e38e
  1386.     dc    $d55557,$f1c71e,$38e38e,$e38e3a,$f1c71e,$38e38e,$f1c71e,$f1c71e,$38e38e,$000000,$f1c71e,$38e38e
  1387.     dc    $0e38e3,$f1c71e,$38e38e,$1c71c7,$f1c71e,$38e38e,$2aaaaa,$f1c71e,$38e38e,$38e38e,$f1c71e,$38e38e
  1388.     dc    $c71c73,$000000,$38e38e,$d55557,$000000,$38e38e,$e38e3a,$000000,$38e38e,$f1c71e,$000000,$38e38e
  1389.     dc    $000000,$000000,$38e38e,$0e38e3,$000000,$38e38e,$1c71c7,$000000,$38e38e,$2aaaaa,$000000,$38e38e
  1390.     dc    $38e38e,$000000,$38e38e,$c71c73,$0e38e3,$38e38e,$d55557,$0e38e3,$38e38e,$e38e3a,$0e38e3,$38e38e
  1391.     dc    $f1c71e,$0e38e3,$38e38e,$000000,$0e38e3,$38e38e,$0e38e3,$0e38e3,$38e38e,$1c71c7,$0e38e3,$38e38e
  1392.     dc    $2aaaaa,$0e38e3,$38e38e,$38e38e,$0e38e3,$38e38e,$c71c73,$1c71c7,$38e38e,$d55557,$1c71c7,$38e38e
  1393.     dc    $e38e3a,$1c71c7,$38e38e,$f1c71e,$1c71c7,$38e38e,$000000,$1c71c7,$38e38e,$0e38e3,$1c71c7,$38e38e
  1394.     dc    $1c71c7,$1c71c7,$38e38e,$2aaaaa,$1c71c7,$38e38e,$38e38e,$1c71c7,$38e38e,$c71c73,$2aaaaa,$38e38e
  1395.     dc    $d55557,$2aaaaa,$38e38e,$e38e3a,$2aaaaa,$38e38e,$f1c71e,$2aaaaa,$38e38e,$000000,$2aaaaa,$38e38e
  1396.     dc    $0e38e3,$2aaaaa,$38e38e,$1c71c7,$2aaaaa,$38e38e,$2aaaaa,$2aaaaa,$38e38e,$38e38e,$2aaaaa,$38e38e
  1397.     dc    $c71c73,$38e38e,$38e38e,$d55557,$38e38e,$38e38e,$e38e3a,$38e38e,$38e38e,$f1c71e,$38e38e,$38e38e
  1398.     dc    $000000,$38e38e,$38e38e,$0e38e3,$38e38e,$38e38e,$1c71c7,$38e38e,$38e38e,$2aaaaa,$38e38e,$38e38e
  1399.     dc    $38e38e,$38e38e,$38e38e,$c71c73,$c71c73,$c71c73,$d55557,$c71c73,$c71c73,$e38e3a,$c71c73,$c71c73
  1400.     dc    $f1c71e,$c71c73,$c71c73,$000000,$c71c73,$c71c73,$0e38e3,$c71c73,$c71c73,$1c71c7,$c71c73,$c71c73
  1401.     dc    $2aaaaa,$c71c73,$c71c73,$38e38e,$c71c73,$c71c73,$c71c73,$d55557,$c71c73,$d55557,$d55557,$c71c73
  1402.     dc    $e38e3a,$d55557,$c71c73,$f1c71e,$d55557,$c71c73,$000000,$d55557,$c71c73,$0e38e3,$d55557,$c71c73
  1403.     dc    $1c71c7,$d55557,$c71c73,$2aaaaa,$d55557,$c71c73,$38e38e,$d55557,$c71c73,$c71c73,$e38e3a,$c71c73
  1404.     dc    $d55557,$e38e3a,$c71c73,$e38e3a,$e38e3a,$c71c73,$f1c71e,$e38e3a,$c71c73,$000000,$e38e3a,$c71c73
  1405.     dc    $0e38e3,$e38e3a,$c71c73,$1c71c7,$e38e3a,$c71c73,$2aaaaa,$e38e3a,$c71c73,$38e38e,$e38e3a,$c71c73
  1406.     dc    $c71c73,$f1c71e,$c71c73,$d55557,$f1c71e,$c71c73,$e38e3a,$f1c71e,$c71c73,$f1c71e,$f1c71e,$c71c73
  1407.     dc    $000000,$f1c71e,$c71c73,$0e38e3,$f1c71e,$c71c73,$1c71c7,$f1c71e,$c71c73,$2aaaaa,$f1c71e,$c71c73
  1408.     dc    $38e38e,$f1c71e,$c71c73,$c71c73,$000000,$c71c73,$d55557,$000000,$c71c73,$e38e3a,$000000,$c71c73
  1409.     dc    $f1c71e,$000000,$c71c73,$000000,$000000,$c71c73,$0e38e3,$000000,$c71c73,$1c71c7,$000000,$c71c73
  1410.     dc    $2aaaaa,$000000,$c71c73,$38e38e,$000000,$c71c73,$c71c73,$0e38e3,$c71c73,$d55557,$0e38e3,$c71c73
  1411.     dc    $e38e3a,$0e38e3,$c71c73,$f1c71e,$0e38e3,$c71c73,$000000,$0e38e3,$c71c73,$0e38e3,$0e38e3,$c71c73
  1412.     dc    $1c71c7,$0e38e3,$c71c73,$2aaaaa,$0e38e3,$c71c73,$38e38e,$0e38e3,$c71c73,$c71c73,$1c71c7,$c71c73
  1413.     dc    $d55557,$1c71c7,$c71c73,$e38e3a,$1c71c7,$c71c73,$f1c71e,$1c71c7,$c71c73,$000000,$1c71c7,$c71c73
  1414.     dc    $0e38e3,$1c71c7,$c71c73,$1c71c7,$1c71c7,$c71c73,$2aaaaa,$1c71c7,$c71c73,$38e38e,$1c71c7,$c71c73
  1415.     dc    $c71c73,$2aaaaa,$c71c73,$d55557,$2aaaaa,$c71c73,$e38e3a,$2aaaaa,$c71c73,$f1c71e,$2aaaaa,$c71c73
  1416.     dc    $000000,$2aaaaa,$c71c73,$0e38e3,$2aaaaa,$c71c73,$1c71c7,$2aaaaa,$c71c73,$2aaaaa,$2aaaaa,$c71c73
  1417.     dc    $38e38e,$2aaaaa,$c71c73,$c71c73,$38e38e,$c71c73,$d55557,$38e38e,$c71c73,$e38e3a,$38e38e,$c71c73
  1418.     dc    $f1c71e,$38e38e,$c71c73,$000000,$38e38e,$c71c73,$0e38e3,$38e38e,$c71c73,$1c71c7,$38e38e,$c71c73
  1419.     dc    $2aaaaa,$38e38e,$c71c73,$38e38e,$38e38e,$c71c73,$c71c73,$c71c73,$d55557,$d55557,$c71c73,$d55557
  1420.     dc    $e38e3a,$c71c73,$d55557,$f1c71e,$c71c73,$d55557,$000000,$c71c73,$d55557,$0e38e3,$c71c73,$d55557
  1421.     dc    $1c71c7,$c71c73,$d55557,$2aaaaa,$c71c73,$d55557,$38e38e,$c71c73,$d55557,$c71c73,$d55557,$d55557
  1422.     dc    $d55557,$d55557,$d55557,$e38e3a,$d55557,$d55557,$f1c71e,$d55557,$d55557,$000000,$d55557,$d55557
  1423.     dc    $0e38e3,$d55557,$d55557,$1c71c7,$d55557,$d55557,$2aaaaa,$d55557,$d55557,$38e38e,$d55557,$d55557
  1424.     dc    $c71c73,$e38e3a,$d55557,$d55557,$e38e3a,$d55557,$e38e3a,$e38e3a,$d55557,$f1c71e,$e38e3a,$d55557
  1425.     dc    $000000,$e38e3a,$d55557,$0e38e3,$e38e3a,$d55557,$1c71c7,$e38e3a,$d55557,$2aaaaa,$e38e3a,$d55557
  1426.     dc    $38e38e,$e38e3a,$d55557,$c71c73,$f1c71e,$d55557,$d55557,$f1c71e,$d55557,$e38e3a,$f1c71e,$d55557
  1427.     dc    $f1c71e,$f1c71e,$d55557,$000000,$f1c71e,$d55557,$0e38e3,$f1c71e,$d55557,$1c71c7,$f1c71e,$d55557
  1428.     dc    $2aaaaa,$f1c71e,$d55557,$38e38e,$f1c71e,$d55557,$c71c73,$000000,$d55557,$d55557,$000000,$d55557
  1429.     dc    $e38e3a,$000000,$d55557,$f1c71e,$000000,$d55557,$000000,$000000,$d55557,$0e38e3,$000000,$d55557
  1430.     dc    $1c71c7,$000000,$d55557,$2aaaaa,$000000,$d55557,$38e38e,$000000,$d55557,$c71c73,$0e38e3,$d55557
  1431.     dc    $d55557,$0e38e3,$d55557,$e38e3a,$0e38e3,$d55557,$f1c71e,$0e38e3,$d55557,$000000,$0e38e3,$d55557
  1432.     dc    $0e38e3,$0e38e3,$d55557,$1c71c7,$0e38e3,$d55557,$2aaaaa,$0e38e3,$d55557,$38e38e,$0e38e3,$d55557
  1433.     dc    $c71c73,$1c71c7,$d55557,$d55557,$1c71c7,$d55557,$e38e3a,$1c71c7,$d55557,$f1c71e,$1c71c7,$d55557
  1434.     dc    $000000,$1c71c7,$d55557,$0e38e3,$1c71c7,$d55557,$1c71c7,$1c71c7,$d55557,$2aaaaa,$1c71c7,$d55557
  1435.     dc    $38e38e,$1c71c7,$d55557,$c71c73,$2aaaaa,$d55557,$d55557,$2aaaaa,$d55557,$e38e3a,$2aaaaa,$d55557
  1436.     dc    $f1c71e,$2aaaaa,$d55557,$000000,$2aaaaa,$d55557,$0e38e3,$2aaaaa,$d55557,$1c71c7,$2aaaaa,$d55557
  1437.     dc    $2aaaaa,$2aaaaa,$d55557,$38e38e,$2aaaaa,$d55557,$c71c73,$38e38e,$d55557,$d55557,$38e38e,$d55557
  1438.     dc    $e38e3a,$38e38e,$d55557,$f1c71e,$38e38e,$d55557,$000000,$38e38e,$d55557,$0e38e3,$38e38e,$d55557
  1439.     dc    $1c71c7,$38e38e,$d55557,$2aaaaa,$38e38e,$d55557,$38e38e,$38e38e,$d55557,$c71c73,$c71c73,$e38e3a
  1440.     dc    $d55557,$c71c73,$e38e3a,$e38e3a,$c71c73,$e38e3a,$f1c71e,$c71c73,$e38e3a,$000000,$c71c73,$e38e3a
  1441.     dc    $0e38e3,$c71c73,$e38e3a,$1c71c7,$c71c73,$e38e3a,$2aaaaa,$c71c73,$e38e3a,$38e38e,$c71c73,$e38e3a
  1442.     dc    $c71c73,$d55557,$e38e3a,$d55557,$d55557,$e38e3a,$e38e3a,$d55557,$e38e3a,$f1c71e,$d55557,$e38e3a
  1443.     dc    $000000,$d55557,$e38e3a,$0e38e3,$d55557,$e38e3a,$1c71c7,$d55557,$e38e3a,$2aaaaa,$d55557,$e38e3a
  1444.     dc    $38e38e,$d55557,$e38e3a,$c71c73,$e38e3a,$e38e3a,$d55557,$e38e3a,$e38e3a,$e38e3a,$e38e3a,$e38e3a
  1445.     dc    $f1c71e,$e38e3a,$e38e3a,$000000,$e38e3a,$e38e3a,$0e38e3,$e38e3a,$e38e3a,$1c71c7,$e38e3a,$e38e3a
  1446.     dc    $2aaaaa,$e38e3a,$e38e3a,$38e38e,$e38e3a,$e38e3a,$c71c73,$f1c71e,$e38e3a,$d55557,$f1c71e,$e38e3a
  1447.     dc    $e38e3a,$f1c71e,$e38e3a,$f1c71e,$f1c71e,$e38e3a,$000000,$f1c71e,$e38e3a,$0e38e3,$f1c71e,$e38e3a
  1448.     dc    $1c71c7,$f1c71e,$e38e3a,$2aaaaa,$f1c71e,$e38e3a,$38e38e,$f1c71e,$e38e3a,$c71c73,$000000,$e38e3a
  1449.     dc    $d55557,$000000,$e38e3a,$e38e3a,$000000,$e38e3a,$f1c71e,$000000,$e38e3a,$000000,$000000,$e38e3a
  1450.     dc    $0e38e3,$000000,$e38e3a,$1c71c7,$000000,$e38e3a,$2aaaaa,$000000,$e38e3a,$38e38e,$000000,$e38e3a
  1451.     dc    $c71c73,$0e38e3,$e38e3a,$d55557,$0e38e3,$e38e3a,$e38e3a,$0e38e3,$e38e3a,$f1c71e,$0e38e3,$e38e3a
  1452.     dc    $000000,$0e38e3,$e38e3a,$0e38e3,$0e38e3,$e38e3a,$1c71c7,$0e38e3,$e38e3a,$2aaaaa,$0e38e3,$e38e3a
  1453.     dc    $38e38e,$0e38e3,$e38e3a,$c71c73,$1c71c7,$e38e3a,$d55557,$1c71c7,$e38e3a,$e38e3a,$1c71c7,$e38e3a
  1454.     dc    $f1c71e,$1c71c7,$e38e3a,$000000,$1c71c7,$e38e3a,$0e38e3,$1c71c7,$e38e3a,$1c71c7,$1c71c7,$e38e3a
  1455.     dc    $2aaaaa,$1c71c7,$e38e3a,$38e38e,$1c71c7,$e38e3a,$c71c73,$2aaaaa,$e38e3a,$d55557,$2aaaaa,$e38e3a
  1456.     dc    $e38e3a,$2aaaaa,$e38e3a,$f1c71e,$2aaaaa,$e38e3a,$000000,$2aaaaa,$e38e3a,$0e38e3,$2aaaaa,$e38e3a
  1457.     dc    $1c71c7,$2aaaaa,$e38e3a,$2aaaaa,$2aaaaa,$e38e3a,$38e38e,$2aaaaa,$e38e3a,$c71c73,$38e38e,$e38e3a
  1458.     dc    $d55557,$38e38e,$e38e3a,$e38e3a,$38e38e,$e38e3a,$f1c71e,$38e38e,$e38e3a,$000000,$38e38e,$e38e3a
  1459.     dc    $0e38e3,$38e38e,$e38e3a,$1c71c7,$38e38e,$e38e3a,$2aaaaa,$38e38e,$e38e3a,$38e38e,$38e38e,$e38e3a
  1460.     dc    $c71c73,$c71c73,$f1c71e,$d55557,$c71c73,$f1c71e,$e38e3a,$c71c73,$f1c71e,$f1c71e,$c71c73,$f1c71e
  1461.     dc    $000000,$c71c73,$f1c71e,$0e38e3,$c71c73,$f1c71e,$1c71c7,$c71c73,$f1c71e,$2aaaaa,$c71c73,$f1c71e
  1462.     dc    $38e38e,$c71c73,$f1c71e,$c71c73,$d55557,$f1c71e,$d55557,$d55557,$f1c71e,$e38e3a,$d55557,$f1c71e
  1463.     dc    $f1c71e,$d55557,$f1c71e,$000000,$d55557,$f1c71e,$0e38e3,$d55557,$f1c71e,$1c71c7,$d55557,$f1c71e
  1464.     dc    $2aaaaa,$d55557,$f1c71e,$38e38e,$d55557,$f1c71e,$c71c73,$e38e3a,$f1c71e,$d55557,$e38e3a,$f1c71e
  1465.     dc    $e38e3a,$e38e3a,$f1c71e,$f1c71e,$e38e3a,$f1c71e,$000000,$e38e3a,$f1c71e,$0e38e3,$e38e3a,$f1c71e
  1466.     dc    $1c71c7,$e38e3a,$f1c71e,$2aaaaa,$e38e3a,$f1c71e,$38e38e,$e38e3a,$f1c71e,$c71c73,$f1c71e,$f1c71e
  1467.     dc    $d55557,$f1c71e,$f1c71e,$e38e3a,$f1c71e,$f1c71e,$f1c71e,$f1c71e,$f1c71e,$000000,$f1c71e,$f1c71e
  1468.     dc    $0e38e3,$f1c71e,$f1c71e,$1c71c7,$f1c71e,$f1c71e,$2aaaaa,$f1c71e,$f1c71e,$38e38e,$f1c71e,$f1c71e
  1469.     dc    $c71c73,$000000,$f1c71e,$d55557,$000000,$f1c71e,$e38e3a,$000000,$f1c71e,$f1c71e,$000000,$f1c71e
  1470.     dc    $000000,$000000,$f1c71e,$0e38e3,$000000,$f1c71e,$1c71c7,$000000,$f1c71e,$2aaaaa,$000000,$f1c71e
  1471.     dc    $38e38e,$000000,$f1c71e,$c71c73,$0e38e3,$f1c71e,$d55557,$0e38e3,$f1c71e,$e38e3a,$0e38e3,$f1c71e
  1472.     dc    $f1c71e,$0e38e3,$f1c71e,$000000,$0e38e3,$f1c71e,$0e38e3,$0e38e3,$f1c71e,$1c71c7,$0e38e3,$f1c71e
  1473.  
  1474. ;; Sampling tables
  1475. table_quantizations_01
  1476.     dc    00,00,01,03,04,05,06,07,08,09,10,11,12,13,14,15
  1477.     dc    00,00,01,03,04,05,06,07,08,09,10,11,12,13,14,15
  1478.     dc    00,00,01,03,04,05,06,07,00,00,00,00,00,00,00,00
  1479.     dc    00,00,01,03,04,05,06,07,00,00,00,00,00,00,00,00
  1480.     dc    00,00,01,03,04,05,06,07,00,00,00,00,00,00,00,00
  1481.     dc    00,00,01,03,04,05,06,07,00,00,00,00,00,00,00,00
  1482.     dc    00,00,01,03,04,05,06,07,00,00,00,00,00,00,00,00
  1483.     dc    00,00,01,03,04,05,06,07,00,00,00,00,00,00,00,00
  1484.     dc    00,00,01,03,04,05,06,07,00,00,00,00,00,00,00,00
  1485.     dc    00,00,01,03,04,05,06,07,00,00,00,00,00,00,00,00
  1486.     dc    00,00,01,03,04,05,06,07,00,00,00,00,00,00,00,00
  1487.     dc    00,00,01,03,04,05,06,07,00,00,00,00,00,00,00,00
  1488. table_quantizations_23
  1489.     dc    00,00,02,04,05,06,07,08,09,10,11,12,13,14,15,16
  1490.     dc    00,00,02,04,05,06,07,08,09,10,11,12,13,14,15,16
  1491.     dc    00,00,02,04,05,06,07,08,09,10,11,12,13,14,15,16
  1492.     dc    00,00,01,02,03,04,05,06,07,08,09,10,11,12,13,16
  1493.     dc    00,00,01,02,03,04,05,06,07,08,09,10,11,12,13,16
  1494.     dc    00,00,01,02,03,04,05,06,07,08,09,10,11,12,13,16
  1495.     dc    00,00,01,02,03,04,05,06,07,08,09,10,11,12,13,16
  1496.     dc    00,00,01,02,03,04,05,06,07,08,09,10,11,12,13,16
  1497.     dc    00,00,01,02,03,04,05,06,07,08,09,10,11,12,13,16
  1498.     dc    00,00,01,02,03,04,05,06,07,08,09,10,11,12,13,16
  1499.     dc    00,00,01,02,03,04,05,06,07,08,09,10,11,12,13,16
  1500.     dc    00,00,01,02,03,04,05,16,00,00,00,00,00,00,00,00
  1501.     dc    00,00,01,02,03,04,05,16,00,00,00,00,00,00,00,00
  1502.     dc    00,00,01,02,03,04,05,16,00,00,00,00,00,00,00,00
  1503.     dc    00,00,01,02,03,04,05,16,00,00,00,00,00,00,00,00
  1504.     dc    00,00,01,02,03,04,05,16,00,00,00,00,00,00,00,00
  1505.     dc    00,00,01,02,03,04,05,16,00,00,00,00,00,00,00,00
  1506.     dc    00,00,01,02,03,04,05,16,00,00,00,00,00,00,00,00
  1507.     dc    00,00,01,02,03,04,05,16,00,00,00,00,00,00,00,00
  1508.     dc    00,00,01,02,03,04,05,16,00,00,00,00,00,00,00,00
  1509.     dc    00,00,01,02,03,04,05,16,00,00,00,00,00,00,00,00
  1510.     dc    00,00,01,02,03,04,05,16,00,00,00,00,00,00,00,00
  1511.     dc    00,00,01,02,03,04,05,16,00,00,00,00,00,00,00,00
  1512.     dc    00,00,01,16,00,00,00,00,00,00,00,00,00,00,00,00
  1513.     dc    00,00,01,16,00,00,00,00,00,00,00,00,00,00,00,00
  1514.     dc    00,00,01,16,00,00,00,00,00,00,00,00,00,00,00,00
  1515.     dc    00,00,01,16,00,00,00,00,00,00,00,00,00,00,00,00
  1516.     dc    00,00,01,16,00,00,00,00,00,00,00,00,00,00,00,00
  1517.     dc    00,00,01,16,00,00,00,00,00,00,00,00,00,00,00,00
  1518.     dc    00,00,01,16,00,00,00,00,00,00,00,00,00,00,00,00
  1519.  
  1520. ;; A combination of the x, d and c tables. The `m' stands
  1521. ;; for the multiplicator using 1.0/x. NOTE: Table c is
  1522. ;; subtracted by 1.0.
  1523. table_xmdc
  1524.     dc    $000001,$100000,$200000,$2aaaab
  1525.     dc    $000003,$080000,$200000,$4ccccd
  1526.     dc    $000003,$080000,$100000,$124925
  1527.     dc    $000007,$040000,$200000,$638e39
  1528.     dc    $000007,$040000,$080000,$088889
  1529.     dc    $00000f,$020000,$040000,$042108
  1530.     dc    $00001f,$010000,$020000,$020821
  1531.     dc    $00003f,$008000,$010000,$010204
  1532.     dc    $00007f,$004000,$008000,$008081
  1533.     dc    $0000ff,$002000,$004000,$004020
  1534.     dc    $0001ff,$001000,$002000,$002008
  1535.     dc    $0003ff,$000800,$001000,$001002
  1536.     dc    $0007ff,$000400,$000800,$000801
  1537.     dc    $000fff,$000200,$000400,$000400
  1538.     dc    $001fff,$000100,$000200,$000200
  1539.     dc    $003fff,$000080,$000100,$000100
  1540.     dc    $007fff,$000040,$000080,$000080
  1541.  
  1542. ;; The `multiply' table used in the last step of sample
  1543. ;; requantization. NOTE: All values are divided by two.
  1544. table_multiple
  1545.     dc    $7fffff,$6597fb,$50a28c,$400000
  1546.     dc    $32cbfd,$285146,$200000,$1965ff
  1547.     dc    $1428a3,$100000,$0cb2ff,$0a1451
  1548.     dc    $080000,$065980,$050a29,$040000
  1549.     dc    $032cc0,$028514,$020000,$019660
  1550.     dc    $01428a,$010000,$00cb30,$00a145
  1551.     dc    $008000,$006598,$0050a3,$004000
  1552.     dc    $0032cc,$002851,$002000,$001966
  1553.     dc    $001429,$001000,$000cb3,$000a14
  1554.     dc    $000800,$000659,$00050a,$000400
  1555.     dc    $00032d,$000285,$000200,$000196
  1556.     dc    $000143,$000100,$0000cb,$0000a1
  1557.     dc    $000080,$000066,$000051,$000040
  1558.     dc    $000033,$000028,$000020,$000019
  1559.     dc    $000014,$000010,$00000d,$00000a
  1560.     dc    $000008,$000006,$000005,$000000
  1561.  
  1562. table_bits
  1563.     dc    5,7,3,10,4,5,6,7,8,9
  1564.     dc    10,11,12,13,14,15,16
  1565.  
  1566. table_translate_quantizations
  1567.     dc    table_quantizations_23
  1568.     dc    table_quantizations_23
  1569.     dc    table_quantizations_01
  1570.     dc    table_quantizations_01
  1571. table_translate_sblimit
  1572.     dc    27,30,8,12
  1573. table_translate_alloc
  1574.     dc    alloc0_bits0
  1575.     dc    alloc1_bits0
  1576.     dc    alloc2_bits0
  1577.     dc    alloc3_bits0
  1578. alloc0_bits0    ;sblimit=27
  1579. alloc1_bits0    ;sblimit=30
  1580.     dc    4,4,4,4,4,4,4,4,4,4,4    ; 11
  1581.     dc    3,3,3,3,3,3,3,3,3,3,3,3    ;+12
  1582.     dc    2,2,2,2            ;+04 = 27
  1583.     dc    2,2,2            ;+03 = 30
  1584. alloc2_bits0    ;sblimit=08
  1585. alloc3_bits0    ;sblimit=12
  1586.     dc    4,4            ; 02
  1587.     dc    3,3,3,3,3,3        ;+06 = 08
  1588.     dc    3,3,3,3            ;+04 = 12
  1589.